gpt4 book ai didi

多值字段中的 Solr 模糊搜索,术语之间的距离最大

转载 作者:行者123 更新时间:2023-12-04 23:58:43 25 4
gpt4 key购买 nike

你好 stackOverflowers

我在 Solr 文档集合中有一个名为names_txt - 这是一个 multiValue="true"字段。

此字段包含文档关联人员的所有姓名

我希望能够进行模糊搜索,同时限制匹配项之间的项数。

查询

names_txt:("markus foss"~2)

将返回您找到术语 markusfoss 且它们之间最多有 2 个术语的所有文档。

但是当我以模糊的方式搜索并且还想指定匹配项之间的最大术语数时,我无法获得正确的语法。

查询:

names_txt:(markus~0.7 foss~0.7)

这确实有效,但会返回假阳性,因为它将返回一个文档,其中一个值为“markus something”,另一个值为“foss somethingElse”。

我想写的是:

(markus~0.7 foss~0.7)~2
  • 但是这种语法在solr中是非法的。

有人能解决我的问题吗?

最佳答案

由于在一个查询项中 Solr 可以处理单词距离限制或模糊搜索限制,因此我们需要两个项:

names_txt:("markus foss"~2) AND names_txt:(markus~0.7 foss~0.7)

请注意,不推荐使用 float 来量化模糊度。在内部,lucene converts 将 float 数字转换为 0 到 2 之间的 int,所以我们应该在搜索中从一开始就使用这个整数 (Damereau Levenshtein) 编辑距离条款。所以我的最终提案是:

names_txt:("markus foss"~2) AND names_txt:(markus~1 foss~1)

(对于那些感兴趣的人:可以在 this code file 的末尾找到将相似性 float 转换为编辑距离 int 的已弃用的有点古怪的函数.)

关于多值字段中的 Solr 模糊搜索,术语之间的距离最大,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11972643/

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