【问题标题】:Can Solr search key words precisely?Solr 能精确搜索关键词吗?
【发布时间】:2012-01-05 07:40:25
【问题描述】:

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

可以这样实现吗?

谢谢。

【问题讨论】:

    标签: solr lucene


    【解决方案1】:

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

    编辑:这取决于您所说的“精确”是什么意思。如果您的字段值是“支持台”并且您的查询是“支持”,它应该匹配吗?

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

    此外,如果您的查询是“支持”并且字段值为“支持”,是否应该匹配?

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

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

    【讨论】:

    • 抱歉,很抱歉,我在手机上浏览时点击了错误的箭头。
    【解决方案2】:

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

    【讨论】:

    • 这取决于OP所说的“精确”是什么意思。这不一定只是词干。
    • 你是对的,我认为你的回答补充了我的。其他转变正在发生,我只是为示例提供解决方案。还可以配置同义词、停用词、小写字母等。我认为重要的是让 solr 用户发现配置文件以及所有内容的可配置性。
    • 我认为这只是关于词干。我对 default 词干分析器的攻击性感到紧张。它为“有机体”和“组织”找到了相同的根源。两个答案都构成了解决方案。
    猜你喜欢
    • 2011-02-07
    • 1970-01-01
    • 2013-01-20
    • 1970-01-01
    • 2014-06-09
    • 1970-01-01
    • 2023-03-31
    • 2013-10-07
    • 1970-01-01
    相关资源
    最近更新 更多