gpt4 book ai didi

使用 EdgeNGramFilterFactory 和搜索查询的最小长度在 Solr 中搜索

转载 作者:行者123 更新时间:2023-12-04 19:15:51 27 4
gpt4 key购买 nike

在我的 solr 架构文件中,我有一个使用 EdgeNGramFilterFactory 的默认搜索字段

<filter class="solr.EdgeNGramFilterFactory" minGramSize="3" maxGramSize="15" side="front" />

假设我的搜索查询是
tes

所以我得到这样的结果:
tess
test
tesla
...

如果我搜索
test

我得到的结果是
test
tess
tesla
...

没关系,因为我使用 EdgeNGramFilterFactory 和 minGramSize=3 但是 我想要以下内容:

当我搜索长度超过 3 个字符的字符串(例如 test)时,我希望 solr 忽略由 3 个字符组成的所有术语(EdgeNGramFilterFactory)。当我搜索“test”时,我不想得到“tess”或“tesla”之类的结果。我不会得到以测试(4 个字符)开头的结果,例如
test
test for
test-drive
...

是否可以在 solr 中配置它?

最佳答案

您只能在字段的索引分析器中配置 EdgeNGram 过滤器;对于查询分析器,仍然可以在没有任何 EdgeNGram 的情况下进行常规标记化。因此,当您搜索“test”时,只会返回以“test”为前缀的结果。

配置例如(不要为查询分析器定义 EdgeNGram)

<fieldType name=...>
<analyzer type="index">
...
<filter class="solr.EdgeNGramFilterFactory" minGramSize="4" maxGramSize="15" side="front" />
</analyzer>
<analyzer type="query">
...
<!-- <filter class="solr.EdgeNGramFilterFactory" minGramSize="4" maxGramSize="15" side="front" /> -->
</analyzer>
</fieldType>

关于使用 EdgeNGramFilterFactory 和搜索查询的最小长度在 Solr 中搜索,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9570268/

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