gpt4 book ai didi

solr - NGram有序搜索

转载 作者:行者123 更新时间:2023-12-03 00:30:29 25 4
gpt4 key购买 nike

几个月前,我问了一个类似的问题here。但是我无法使其正常工作:

我尝试建立一个简单的文件名搜索。我希望用户可以搜索
文件名的任何部分。
假设以下文件名已建立索引:

[1] My_file_2012.01.12.txt
[2] My_file_2012.01.05.txt
[3] My_file_2012.05.01.txt
[4] My_file_2012.08.27.txt
[5] My_file_2012.12.12.txt
[6] My_file_2011.12.12.txt
[7] file_01_2012.09.09.txt

然后用户可以搜索:
"ile_20"                    (finds the first six documents)
"12.txt" (finds 1, 5, 6)
"12" followed by "01" (finds 1, 2, 3 - NOT 7)
"2012" followed by "01" (finds 1, 2, 3 - NOT 7)

(注意:是的,用户可能确实会搜索“ile_20”之类的字符串,例如
由于复制和粘贴错误)

因此,我使用nGram-tokenizer来索引文件名的每个部分。这个
到目前为止工作正常。
为了支持上面提到的“后续”搜索,我需要一个查询
尊重条款的顺序,无论这些条款之间有多少文字
两个词(可以说最多100个字符)。

由于带有“slop”的“text_phrase”查询不遵守
根据正确的术语,我决定使用“span_near”查询。这很好
在多数情况下。

看到这里我完整的示例索引包括。错误说明: click

如上例中所述,查询“2012”后跟“01”
不起作用,因为nGram token 生成器为每个生成位置值
token ,但是这些值在由“span_near”查询使用时不是很有用。而
索引时,将术语“2012”分配给位置值(50),该值是
大于术语“01”的位置值(例如10)。从50和10
查询顺序不正确。有序的作品
仅适用于长度相同的字词(例如,“'12',后跟
'01'“)或术语按长度排序(例如,“'20”后跟
'.12'“)。

那么,如何才能实现正确的搜索行为?我只想要能力
在遵守文件名顺序的同时搜索文件名的任何部分
条款。
也许有一种方法可以告诉“span_near”不要使用该位置,而是
而不是“start_offset”?
还是我可以使用另一个查询?

最佳答案

这样的通配符搜索怎么样:

“12”后跟“01”-> 12 * 01

关于solr - NGram有序搜索,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12249258/

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