gpt4 book ai didi

elasticsearch - Lucene/Elasticsearch/Solr中的最小单词匹配数

转载 作者:行者123 更新时间:2023-12-02 22:59:32 25 4
gpt4 key购买 nike

我查询的文本(以及查询本身)平均有11个字(最多约25个字)。我希望我的查询仅在查询中至少有一半的单词与文本匹配时才返回匹配项。

例如,这就是我最初的Lucene查询的样子(为简单起见,它只有4个单词):

jakarta~ apache~ lucene~ stackoverflow~

如果至少一个单词是模糊匹配的,它将返回一个匹配项,但是我希望只有在至少两个(四个半数)单词是模糊匹配的情况下才返回一个匹配项。

有可能在Lucene吗?

我可以像这样拆分查询( OR是Lucene中的默认运算符):
(jakarta~ apache~) AND (lucene~ stackoverflow~)

但这不会返回匹配项,因为 jakartaapache均已匹配,但 lucenestackoverflow均未匹配。

我可以将查询更改为:
(jakarta~ AND apache~) (jakarta~ AND lucene~) (jakarta~ AND stackoverflow~)
(apache~ AND lucene~) (apache~ and stackoverflow~) (lucene~ AND stackoverflow~)

这样会有效吗?平均而言,我的表达式将由462个 AND子句(二项式系数11和6)组成,在最坏的情况下,它将由5200300 AND子句(二项式系数25和13)组成。

如果在Lucene中不可能(或者在性能上没有意义),在Elasticsearch或Solr中可能吗?

对于数据库中的至少10000个文本,它应该可以快速运行(<= 0.5秒/搜索)。

如果我以后可以轻松更改最小匹配百分比(例如40%而不是50%)会更好,但是我可能不需要。

最佳答案

所有这三个选项都支持最低限度,应与可选查询子句中的功能匹配。

  • Lucene:通过 BooleanQuery.Builder.setMinimumShouldMatch 方法在BooleanQueries中设置。
  • Solr:DisMax mm parameter
  • Elasticsearch:minimum_should_match参数,用于Bool查询,Multi Match查询等。
  • 关于elasticsearch - Lucene/Elasticsearch/Solr中的最小单词匹配数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38997589/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com