umbraco检查搜索中的多个搜索项

umbraco检查搜索中的多个搜索项,umbraco,examine,Umbraco,Examine,我正在尝试在umbraco Inspect中设置搜索。我有两个搜索字段:物料和制造商。当我尝试搜索一种物料和一种制造商时,它将给出正确的结果。但是当尝试搜索多个物料或制造商时,它不会给出结果。这是我的代码 const string materialSearchFields = "material"; const string manufacturerSearchFields = "manufacturer"; 如果(!string.IsNullOrEmpty(Request.Quer

我正在尝试在umbraco Inspect中设置搜索。我有两个搜索字段:物料和制造商。当我尝试搜索一种物料和一种制造商时,它将给出正确的结果。但是当尝试搜索多个物料或制造商时,它不会给出结果。这是我的代码

 const string materialSearchFields = "material";
    const string manufacturerSearchFields = "manufacturer";
如果(!string.IsNullOrEmpty(Request.QueryString[“material”])) { material=Helper.StripTags(Request.QueryString[“material”]); } 如果(!string.IsNullOrEmpty(Request.QueryString[“manufacturer”])) { manufacturer=Helper.StripTags(Request.QueryString[“manufacturer”]); } 如果(!string.IsNullOrEmpty(Request.QueryString[“material”])| |!string.IsNullOrEmpty(Request.QueryString[“manufacturer”])) { var query=userFieldSearchCriteria.Field(materialSearchFields,material).和().Field(manufacturerSearchFields,manufacturer).Compile(); contentResults=contentSearcher.Search(query.ToList(); }

我在querystring中的搜索关键字是材料=铁,钢

如何拆分此关键字并完成搜索?
提前感谢您的帮助……

您正在使用AND运算符,在您的情况下,我想您是在寻找GROUPEDOR

我刚刚在一个老项目中工作,从那里抓到了这个小飞贼(我已经根据您的需要进行了调整)。我想这会帮助你:

public IEnumerable<DynamicNode> SearchUmbraco(string[] keywords, string currentCulture)
        {
            // In this case I had some  diferent cultures, so this sets the BaseSearchProvider to the given culture parameter. You might not need this, use your default one.
            BaseSearchProvider searcher = SetBaseSearchProvider(currentCulture);

            var searchCriteria = searcher.CreateSearchCriteria(BooleanOperation.Or);
            var groupedQuery = searchCriteria.GroupedOr(new[] {"manufacturer", "material"}, keywords).Compile();

            var searchResults = searcher.Search(groupedQuery);

            // ... return IEnumerable of dynamic nodes (in this snipet case)

        }
public IEnumerable SearchUmbraco(字符串[]关键字,字符串currentCulture)
{
//在本例中,我有一些不同的区域性,因此这会将BaseSearchProvider设置为给定的区域性参数。您可能不需要它,请使用默认的区域性参数。
BaseSearchProvider searcher=SetBaseSearchProvider(当前区域性);
var searchCriteria=searcher.CreateSearchCriteria(BooleanOperation.Or);
var groupedQuery=searchCriteria.GroupedOr(新[]{“制造商”,“材料”},关键字).Compile();
var searchResults=searcher.Search(groupedQuery);
//…返回动态节点的IEnumerable(在这种情况下)
}
我只是在助手中拆分(etc)关键字,并在调用此方法时将它们传递给字符串数组

只需查看umbraco博客上的以下信息: