如何让 Solr 不为查询中的常用词编制索引?
How do I get Solr to not index common words in a query?
我刚开始使用 Solr,我的服务器中有一个实例 运行
我的问题是:
当我用某些术语查询 Solr 时,它没有 return 结果,但有索引了该术语的项目。我和一位正在使用这个 Solr 实例的开发人员交谈过,他记得一些关于 "blacklist"、或 "empty list" 或相关的东西,它们充当查询的过滤器,就像一个常用单词列表return 查询结果质量差,例如:
"a"、"the"、"for"、...
我想知道如何管理该列表以从中删除一个术语(或添加一个、编辑等)
听起来你在谈论停用词过滤器。如果您启用了停用词过滤,您应该会在 schema.xml
的字段分析中看到与此类似的内容
<filter class="solr.StopFilterFactory" ignoreCase="true"
words="stopwords.txt" enablePositionIncrements="true" />
这引用了文件 stopwords.txt
,这是该文件的标准名称,但可能会使用不同的文件名,因此它在您的服务器上可能会有所不同。该文件将包含在搜索过程中应忽略的单词列表。您应该在索引的 conf
目录中找到该文件(与 schema.xml
和 solrconfig.xml
相同的位置)。您可以编辑此文件,但为了获得最佳效果,您应该在编辑后重新索引您的记录。
或者,如果您不希望从搜索中过滤常用词,则可以从您的字段分析中完全删除对 StopFilterFactory
的引用。同样,您应该计划在这样做之后重新索引您的记录。
我刚开始使用 Solr,我的服务器中有一个实例 运行
我的问题是:
当我用某些术语查询 Solr 时,它没有 return 结果,但有索引了该术语的项目。我和一位正在使用这个 Solr 实例的开发人员交谈过,他记得一些关于 "blacklist"、或 "empty list" 或相关的东西,它们充当查询的过滤器,就像一个常用单词列表return 查询结果质量差,例如: "a"、"the"、"for"、...
我想知道如何管理该列表以从中删除一个术语(或添加一个、编辑等)
听起来你在谈论停用词过滤器。如果您启用了停用词过滤,您应该会在 schema.xml
<filter class="solr.StopFilterFactory" ignoreCase="true"
words="stopwords.txt" enablePositionIncrements="true" />
这引用了文件 stopwords.txt
,这是该文件的标准名称,但可能会使用不同的文件名,因此它在您的服务器上可能会有所不同。该文件将包含在搜索过程中应忽略的单词列表。您应该在索引的 conf
目录中找到该文件(与 schema.xml
和 solrconfig.xml
相同的位置)。您可以编辑此文件,但为了获得最佳效果,您应该在编辑后重新索引您的记录。
或者,如果您不希望从搜索中过滤常用词,则可以从您的字段分析中完全删除对 StopFilterFactory
的引用。同样,您应该计划在这样做之后重新索引您的记录。