Sitecore 7 ContentSearch API是否删除查询中的停用词?
我发现包含'','和',''等的搜索不会返回结果,因为Lucene已经删除了停用词。 因此,如果我搜索一个题为“第一次世界大战后果”的项目,我将得到零结果。
但是如果我剥离''和''这个',那么我正在寻找“第一次世界大战后的善后”。 我会收到预期的文件。
ContentSearch API是否从查询中删除停用词? 这是一个可以配置Lucene删除的东西吗? 或者我应该建立我的查询之前删除这些停止词?
感谢Adam
您可以配置Sitecore标准分析器来接受您自己的自定义Stopwords集。 用停用词创建一个文本文件(每行一个停止词),然后在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]Dataindexesstopwords.txt</param>
</param>
</param>
</param>
进一步阅读:我写了一篇关于这个问题的博客文章,可能会有所帮助http://blog.horizontalintegration.com/2014/03/19/sitecore-standard-analyzer-managing-you-own-stop-words-filter /
我认为这是来自这个博客的问题同样的问题。
你可以尝试按照博客文章中的步骤操作吗?
其他选项可以是创建自定义分析器并将构造函数提供给stopWords列表。 就像是:
public class CustomAnalyzer : Lucene.Net.Analysis.Standard.StandardAnalyzer
{
private static Hashtable stopWords = new Hashtable()
{
{"of", "of"},
{"stopword2", "stopword2"}
};
public CustomAnalyzer() : base(Lucene.Net.Util.Version.LUCENE_30, stopWords)
{
}
}
修改后,您需要更改您的配置文件。 有关分析器的好博客文章,你可以在这里找到。 PS:如果真的有效,我没有试过我的代码。
链接地址: http://www.djcxy.com/p/18893.html上一篇: Does the Sitecore 7 ContentSearch API remove stop words from queries?