我正在使用新的 Sitecore 搜索,我遇到的问题是结果与我的搜索词无关。
例如,搜索“lies”将找到“applies”。这不是我想要的。
这是我正在执行的搜索示例(简化)。这是对 SearchResultItem 的“Content”属性上的“Contains”的直接 LINQ 检查,很可能不是我应该做的。恰好我在网上找到的示例实际上就是这样做的。
我的代码示例(简化)。在这里,我将搜索语句分解为单独的关键字。顺便说一句,我正在寻找一种首先显示完整句子匹配的方法。
using (var context = ContentSearchManager.GetIndex("sitecore_web_index").CreateSearchContext())
{
var results = context.GetQueryable<SearchResultItem>()
.Filter(i => i.Path.StartsWith(Home.Paths.FullPath))
.Filter(GetTermPredicate(Term));
// use results here
}
protected Expression<Func<SearchResultItem, bool>> GetTermPredicate(string term)
{
var predicate = PredicateBuilder.True<SearchResultItem>();
foreach (var tempTerm in term.Split(' '))
{
predicate = predicate.And(p => p.Content.Contains(tempTerm));
}
return predicate;
}
提前谢谢您!!
最佳答案
好吧。我从 Sitecore 支持部门获得了帮助。
在我的 Sitecore 版本中,我可以使用以下内容来实现搜索整个单词而不是部分单词:
而不是:
predicate = predicate.And(p => p.Content.Contains(tempTerm));
使用
predicate = predicate.And(p => p.Content.Equals(tempTerm));
问题已解决。
关于使用整个单词在新的 Sitecore ContentSearch 中进行搜索,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23021785/