C# Sitecore 8.1 |不搜索自定义Lucene停止词
我正在使用Lucene为我的网站实现一个全文搜索解决方案。 目标是在所有sitecore项目的内容中搜索任何已搜索的单词 我可以使用带谓词的搜索来完成此操作:C# Sitecore 8.1 |不搜索自定义Lucene停止词,c#,search,lucene.net,sitecore8,stop-words,C#,Search,Lucene.net,Sitecore8,Stop Words,我正在使用Lucene为我的网站实现一个全文搜索解决方案。 目标是在所有sitecore项目的内容中搜索任何已搜索的单词 我可以使用带谓词的搜索来完成此操作: var predicate = PredicateBuilder.True<SearchResultItem>(); var searchTerms = search.Split(' '); predicate = predicate.Or(item => item.Content.Contains(search)).
var predicate = PredicateBuilder.True<SearchResultItem>();
var searchTerms = search.Split(' ');
predicate = predicate.Or(item => item.Content.Contains(search)).Boost(3);
foreach (var word in searchTerms)
{
predicate = predicate.Or(item => item.Content.Contains(word)).Boost(1);
}
var allItems = Context.GetQueryable<SearchResultItem>().Where(predicate);
var predicate=PredicateBuilder.True();
var searchTerms=search.Split(“”);
谓词=谓词.Or(item=>item.Content.Contains(search)).Boost(3);
foreach(搜索术语中的var单词)
{
谓词=谓词.Or(item=>item.Content.Contains(word)).Boost(1);
}
var allItems=Context.GetQueryable().Where(谓词);
然而,当我用一些特定的词搜索时,我出现了一个错误“生成的Lucene查询包含太多的子句”
为了解决此错误,我使用这些单词创建了一个stopwords文件stopwords.txt,将其放在[FULL_PATH_To_SITECORE_ROOT_FOLDER]\Data\index\上,并将SITECORE.ContentSearch.Lucene.DefaultIndexConfiguration.config文件更改为:
<param desc="defaultAnalyzer" type="Sitecore.ContentSearch.LuceneProvider.Analyzers.DefaultPerFieldAnalyzer, Sitecore.ContentSearch.LuceneProvider">
<param desc="defaultAnalyzer" type="Lucene.Net.Analysis.Standard.StandardAnalyzer, Lucene.Net">
<param hint="version">Lucene_30</param>
<param desc="stopWords" type="System.IO.FileInfo, mscorlib">
<param hint="fileName">[FULL_PATH_TO_SITECORE_ROOT_FOLDER]\Data\indexes\stopwords.txt</param>
</param>
</param>
</param>
卢塞诺30
[指向站点核心根文件夹的完整路径]\Data\index\stopwords.txt
我不再出现“生成的Lucene查询包含太多子句”错误,但根据我的理解,当我在stopword.txt文件中设置stopword时,Lucene不应该在项目内容中搜索该单词
这意味着,当我搜索“伦敦假日”时,应返回与“伦敦假日”相同的结果
然而,这并没有发生。
当我搜索“holiday in London”时,返回的结果要多得多,包括的项目中既没有“London”也没有“holiday”这个词,而是存在“in”这个词
有人能帮我弄清楚我是怎么逃走的吗
提前谢谢