【问题标题】:Finding exact match using Lucene search API使用 Lucene 搜索 API 查找完全匹配
【发布时间】:2009-06-10 18:07:55
【问题描述】:

我正在使用 Lucene 开发公司搜索 API。 我的 Lucene 公司索引有 2 家公司: 1.Abigail Adams National Bancorp, Inc. 2.国民银行

如果用户键入 National Bancorp,则只应返回公司#2(即 National Bancorp)而不是#1.....即。只应返回完全匹配。 如何实现此功能?

感谢阅读。

【问题讨论】:

  • 未来的搜索者:如果您只是在搜索 lucene 索引服务,那么 Somonath Sabat 没有支持的答案在至少一个实例中似乎是正确的 - 将短语放在双引号中。已通过 musicbrainz 验证。

标签: lucene lucene.net


【解决方案1】:

您可以使用KeywordAnalyzer 对该字段进行索引和搜索。关键字分析器将只为整个字符串生成一个标记。

【讨论】:

【解决方案2】:

我在谷歌上搜索了很多,但没有解决同样的问题。挠了一阵头后,我找到了解决方案。在双引号内搜索字符串,这将解决您的问题。

National Bancorp 将返回 #1 和 #2,但“National Bancorp”将仅返回 #2。

【讨论】:

    【解决方案3】:

    这可能需要使用瓦状过滤器。此过滤器将多个单词组合在一起。例如,具有 3 个令牌的 ShingleFilter 的 Abigail Adams National Bancorp 将产生(假设是一个简单的 WhitespaceAnalyzer)[Abigail]、[Abigail Adams]、[Abigail Adams National]、[Adams National Bancorp]、[Adams National]、[Adams] 、[National]、[National Bancorp] 和 [Bancorp]。

    如果用户查询 National Bancorp,您将在 National Bancorp 本身上获得完全匹配,而在 Abigail Adams National Bancorp 上获得较低得分的完全匹配(得分较低,因为该字段中有更多令牌,因此降低了以色列国防军)。我认为在这样的查询中返回两个文档是有意义的。

    您可能还想在查询时应用 shingle 过滤器,具体取决于用例。

    【讨论】:

      【解决方案4】:

      您可能需要重新考虑您的要求,具体取决于我是否正确理解了您的问题。如果我误会了你,请多多包涵。

      只是一点点思考:

      • 如果您只想返回 exact 匹配项,那么您为什么要首先搜索?

      • 您确定用户期望完全匹配吗?我通常会假设搜索引擎会容纳缺失的单词。

      • 假设用户搜索 National Bank,但 National Bank 已不在您的索引中。您仍然希望 Abigail Adams National Bancorp, Inc 仅仅因为不完全匹配而被排除在结果之外吗?

      鉴于此,我建议您继续向用户展示所有可能的匹配项(无论是否准确),并让他们自己决定最适合他们的匹配项。我这么说只是因为您可能与所有用户的想法不同。 Lucene 将确保最接近的匹配在结果中排​​名最高,帮助他们更快地做出选择。

      【讨论】:

        【解决方案5】:

        我对精确匹配有同样的要求。我使用了 org.hibernate.search.query.dsl 的 queryBuilder,查询是:

        query = queryBuilder.phrase().withSlop(0).onField(field)
                                .sentence(searchTerm).createQuery();
        

        它对我有用。

        【讨论】:

          猜你喜欢
          • 2011-12-19
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2019-09-22
          • 1970-01-01
          • 1970-01-01
          • 2011-12-09
          相关资源
          最近更新 更多