在SOLR查询中使用词干分析

时间:2013-02-20 14:55:55

标签: solr stemming

我已经设置了SOLR,并在示例'collection1'中添加了一个文档。

<doc>
    <str name="id">3007WFP</str>
    <str name="name">Fishing</str>
    <str name="type">Ladies</str>
</doc>

我可以使用

在界面中查询
name:*fishing*

但是我希望能够开始工作,所以我可以键入fish并获取此文档,因为fishing这个词被阻止了。我还希望能够在搜索Ladies时找到Lady

但是我尝试了查询

name:fish

我没有结果。我没有添加通配符,因为我知道它会匹配,并且只想测试词干功能。

我已将名称和类型字段的模式类型更改为text_en,我认为这包括词干 - 重新启动的SOLR和重新索引(点击优化)。

是否有我遗漏或做错的事情,当你想使用词干时查询语法是否有所不同?

另一个奇怪的问题是从text_general更改为text_en之后搜索

name:Fishing

没有产生任何结果,即使它应该完全匹配..

2 个答案:

答案 0 :(得分:2)

单击“优化”不会重新索引文档。它将简单地合并现有索引中的各个段,这意味着您的索引仍然是旧的。因此,一旦您重新发布文件,即重新索引文档,name:fish应匹配。

顺便说一下,你可以在http://localhost:8983/solr/#/collection1/analysis查看分析仪正在做什么。您可以选择fieldType并查看索引时发生的情况。例如,使用此工具,您可以看到text_en类型,

fishing -> fish
ladies -> ladi

因此搜索type:lady将与此文档不匹配。如果您还在“字段值(查询)”中指定了查询,则会突出显示匹配项(如果有)。

答案 1 :(得分:0)

您必须删除这些文档并重新添加,以便新的fieldType更改生效。

有关stemming的工作原理以及可用的不同词汇类型的详细信息,您可以查看here

在您的情况下,语言为英语,因此您可以使用PorterStemFilterFactory