如何让 Solr 不索引查询中的常用词?

Posted

技术标签:

【中文标题】如何让 Solr 不索引查询中的常用词?【英文标题】:How do I get Solr to not index common words in a query? 【发布时间】:2015-03-02 19:17:14 【问题描述】:

我是 Solr 的新手,我的服务器中有一个正常运行的实例

我的问题是:

当我使用某些术语查询 Solr 时,它不会返回结果,但有些项目带有该术语的索引。我与一位正在使用此 Solr 实例的开发人员交谈,他记得一些关于“黑名单”或“空列表”或相关内容的内容,它们充当查询的过滤器,就像返回低质量的常见单词列表查询结果,例如: “a”、“the”、“for”、...

我想知道如何管理该列表以从中删除一个术语(或添加一个、编辑等)

【问题讨论】:

【参考方案1】:

听起来您在谈论停用词过滤器。如果您启用了停用词过滤,您应该会在 schema.xml 中的字段分析中看到与此类似的内容

<filter class="solr.StopFilterFactory" ignoreCase="true"
                 words="stopwords.txt" enablePositionIncrements="true" />

这引用了文件stopwords.txt,这是该文件的标准名称,但可以使用不同的文件名,因此在您的服务器上可能会有所不同。该文件将包含在搜索过程中应忽略的单词列表。您应该在您的索引的conf 目录中找到此文件(与schema.xmlsolrconfig.xml 相同的位置)。您可以编辑此文件,但为了获得最佳效果,您应该在这样做后重新索引您的记录。

或者,如果您不想从搜索中过滤常用词,您可以从字段分析中完全删除对StopFilterFactory 的引用。同样,您应该计划在这样做之后重新索引您的记录。

【讨论】:

以上是关于如何让 Solr 不索引查询中的常用词?的主要内容,如果未能解决你的问题,请参考以下文章

如何查询 SOLR 的空字段?

如何通过 curl 查询删除 SOLR 索引数据?

什么是 Solr 中良好的自动预热查询以及它们如何工作?

如何自动从数据库中索引solr中的数据

solr索引删除后索引文档数量未变

Solr/Solrj:如何确定索引中的文档总数?