Solr可以准确搜索关键词吗?

时间:2011-11-24 03:31:48

标签: solr lucene

例如: 我想搜索“支持”,我希望它只返回包含“支持”的结果,并且不返回包含“支持”或任何其他相关匹配的结果。

是否可以像这样实施?

感谢。

2 个答案:

答案 0 :(得分:7)

是的,如果您搜索未经分析的字段类型,则匹配是准确的。在默认的Solr模式中,未分析的字段类型名为“string”(类“solr.StrField”)

编辑:这取决于你所说的“精确”。如果您的字段值是“支持服务台”而您的查询是“支持”,那么它是否匹配?

  • 如果您的答案是肯定的,那么您应该考虑配置词干。
  • 如果您的答案为否,即查询必须与字段值匹配而不是其他内容,那么您应该使用字符串(即未分析的)字段类型。

此外,如果您的查询是“支持”且字段值为“支持”,那么它是否匹配?

  • 如果您回答是,那么您应该使用LowerCaseFilterFactory(您不能在字符串字段类型上执行此操作,您必须切换到文本字段类型)。
  • 如果您回答“否”,则可以使用字符串字段类型。

总之,Lucene / Solr文本分析管道非常易于配置,请查看analyzer docs以获取所有可用选项的参考。

答案 1 :(得分:3)

您所描述的内容称为词干。有关堆栈溢出的另一个几乎相同的问题,请查看:Solr exact word search 您需要在配置中重新编制索引并禁用词干分析。我不相信在查询时可以这样做,因为索引中存储的内容是单词的词干版本。在您的情况下,“支持”存储在索引中,即使显示“支持”。 这应该让你开始How to configure stemming in Solr?