Solr中的确切单词搜索

时间:2011-06-21 16:14:50

标签: search lucene solr stemming

我有一个与this question密切相关的问题。

在我的架构中,我有一个字段

<field name="text" type="textgen" indexed="true" stored="true" required="true"/>

这给出了完全匹配,即。阻止残疾

  

吃=吃

是否有可能,虽然配置为textgen搜索单词的其他变体

  

例如。吃=吃,吃,吃

吃~0会给出类似的声音,如肉,节拍等。但这不是我想要的。

我开始认为实现这一目标的唯一方法是添加另一个字段,然后添加textgen,但如果有更简单的方法,我很有兴趣听到它。

2 个答案:

答案 0 :(得分:6)

使用copyfield语句是Solr中的常规方法。由于stemming是您正在询问的答案,因此我建议您使用。如果您担心索引大小,可以设置stored=false

您也可以使用lemmatisation,这与词干相反 - 您可以在其中添加所有变形形式的词。这通常在搜索查询上执行,例如,eat扩展到eat, eats, eating等等。

第三种选择可能是使用通配符搜索,但我不鼓励它。尤其是因为它绕过了目标字段的所有模式配置过滤器。

答案 1 :(得分:0)

如果您使用text作为字段类型,那么吃,吃,吃和吃都将存储为eat,搜索FieldName:eat会找到所有这些。如果您将字段类型更改为text-gen,则搜索FieldName:eat只会找到“吃”,而不是吃,吃或吃。