我已经设置了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
没有产生任何结果,即使它应该完全匹配..
答案 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
。