如何在Solr中使用同义词FilterFactory?

如何在Solr中使用同义词FilterFactory?,solr,Solr,我试图在查询时执行同义词过滤,这样,如果搜索X,Y的结果也会显示出来 我转到运行Solr的地方,编辑.txt文件并在新行上添加X,Y 这是行不通的。我检查了模式,发现: <analyzer type="query"> <filter class="solr.SynonymFilterFactory" synonyms="synonyms.txt" ignoreCase="true" expand="true" /> 仅在索引时使用同义词FilterFactory,而不是

我试图在查询时执行同义词过滤,这样,如果搜索X,Y的结果也会显示出来

我转到运行Solr的地方,编辑.txt文件并在新行上添加X,Y

这是行不通的。我检查了模式,发现:

<analyzer type="query">
<filter class="solr.SynonymFilterFactory" synonyms="synonyms.txt" ignoreCase="true" expand="true" />

仅在索引时使用同义词FilterFactory,而不是在查询时使用。在查询时,同义词存在一些微妙但已被充分理解的问题

见:


将同义词移动到index analyzer链后,请检查它们是否与管理UI中的分析页面一起工作。

来自@Walter Underwood的答案很好,但不完整

无论是在索引时还是在查询时使用同义词过滤器工厂

因此,假设我们有一个同义词文件,其中包含以下条目:

5,five
如果默认运算符为
(默认运算符),则应在查询过滤器上设置同义词。这样,对“5”的查询将作为对“5”或“5”的查询传递到后端,后端将相应地响应。同时,您可以在不重新编制索引的情况下更改同义词文件,并且索引更小,因为它不必有这么多标记

但是,如果将默认运算符更改为
,则应改为在索引过滤器上设置同义词。如果不这样做,对“5”的查询将作为“5”和“5”转到后端,并且它将与预期的文档不匹配。唉,这使得索引更大,也意味着新的同义词需要完全重新索引


注意:当前是错误的,遗漏了所有这些细节。

这是否意味着我应该删除索引并在建立同义词后重新索引?分析页面似乎没有读取我的架构。SynonymFilterFactory仍然显示为“查询”和引用“synonyms.txt”。我不知道它为什么读synonyms.txt,因为我只是在模式页面中查找“synonyms.txt”,没有找到匹配项。您可以通过管理UI查看Schema.xml,在顶部查找模式链接。您可能需要从为Java设置的-Dsolr.solr.home位置开始遍历配置文件。这应该指向正在使用的模式。如果使用显式同义词映射(“i-pod,i-pod=>ipod”),在查询时是否也需要使用同义词过滤器工厂?@WalterUnderwood请参阅我的编辑。solr home似乎是对的,不是吗?
cwd=/usr/share/tomcat6 SolrHome=/data/solr/ 
5,five