我发现包含“of”、“and”、“the”等的搜索不会返回结果,因为 Lucene 已删除停用词。因此,如果我搜索标题为“第一次世界大战的后果”的项目,我将得到零结果。
但是如果我去掉“of”和“the”,那么我正在搜索“aftermath First World War”。我会拿回预期的文件。
ContentSearch API 是否会从查询中删除停用词?这是可以通过配置 Lucene 来删除的东西吗?或者我应该在构建查询之前删除这些停用词?
谢谢 亚当
最佳答案
您可以配置 Sitecore 标准分析器以接受您自己的自定义停用词集。 创建一个包含停用词的文本文件(每行一个停用词),然后在 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>
进一步阅读:我写了一篇关于这个问题的博客文章,可能会有所帮助 http://blog.horizontalintegration.com/2014/03/19/sitecore-standard-analyzer-managing-you-own-stop-words-filter/
关于lucene - Sitecore 7 ContentSearch API 是否会从查询中删除停用词?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21583891/