umbraco中的多个Searchterm检查搜索

时间:2013-12-09 06:26:15

标签: umbraco examine

我正在尝试在umbraco检查中设置搜索。我有两个搜索字段,材料和制造商。当我尝试使用一种材料和一种制造商进行搜索时,它将给出正确的结果。但是当尝试搜索多个时材料或制造商它没有给出结果。我的代码是

 const string materialSearchFields = "material";
    const string manufacturerSearchFields = "manufacturer";

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

这里我在查询字符串中的搜索关键字是材料=铁,钢

我们如何拆分此关键字并完成搜索? 在此先感谢您的帮助......

1 个答案:

答案 0 :(得分:0)

您正在使用AND运算符,在您的情况下,我认为您正在寻找GROUPEDOR?

我刚刚在一个旧项目中工作并从那里抓住了这个snipet(我已经根据你的需要进行了调整)。我想它会帮助你:

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)

        }

我只是在帮助器中拆分(等)关键字,并在调用此方法时将它们传递给字符串数组。

请在umbraco博客上查看此信息:http://umbraco.com/follow-us/blog-archive/2011/9/16/examining-examine.aspx