Sitecore搜索多个单词

时间:2013-08-01 04:19:29

标签: sitecore sitecore7

如何使用Sitecore 7搜索多个单词? 我尝试使用Contains的每个单词,但是效果不好,我觉得性能不是很好。

2 个答案:

答案 0 :(得分:3)

您可以针对此问题使用PredicateBuilder:

代码将类似于:

 Queryable<SearchItem> SearchText(List<string> keywords, IQueryable<SearchItem> itemList)
    {
        var predicate = PredicateBuilder.True<SearchItem>();

        foreach (string keyword in keywords)
        {
            predicate = predicate.And(i => i.FieldOne.Contains(keyword) || i.FieldTwo.Contains(keyword) || i.FieldThree.Contains(keyword) || i.Fieldyyy.Contains(keyword));
        }
        return itemList.Where(predicate);
    }

关于predicateBuilder,你可以在这里找到:   Dynamic query using predicate builder

答案 1 :(得分:0)

如果使用ToList(),性能会变得更好;只有当您从IQueryable中筛选出所有需要的项目(使用LINQ语句)时,才能在IQueryable上使用。当你调用.ToList();查询将被执行。