gpt4 book ai didi

xml - 带空格的 Solr 子字符串搜索

转载 作者:数据小太阳 更新时间:2023-10-29 02:34:04 24 4
gpt4 key购买 nike

我想通过 "hn do" 搜索找到 "john doe""*hn*""john\d\*" 有效,但当查询包含空格时 "*hn\do*" 无效工作。转义通配符也无济于事。

我的字段定义如下:

 <fieldType name="string" class="solr.TextField" positionIncrementGap="100">
<analyzer type="index">
<!--<filter class="solr.EdgeNGramFilterFactory" minGramSize="3" maxGramSize="25" side="back" />-->
<tokenizer class="solr.KeywordTokenizerFactory"/>
<filter class="solr.LowerCaseFilterFactory"/>
</analyzer>
<analyzer type="query">
<tokenizer class="solr.KeywordTokenizerFactory"/>
<filter class="solr.LowerCaseFilterFactory"/>
</analyzer>
</fieldType>

最佳答案

尝试使用 NGramTokenizerFactory 。它将生成给定范围内大小的 n-gram 标记。如下

<analyzer>
<tokenizer class="solr.NGramTokenizerFactory" minGramSize="2" maxGramSize="10"/>
</analyzer>

它将作为:

In: "john doe"
Out: "jo","joh","john", "john ","john d","john do",
"john doe", "oh", "ohn","ohn ", "ohn d"...

并从 fieldType 定义中删除 KeywordTokenizerFactory。

你也可以考虑使用solr.EdgeNGramTokenizerFactory

它有另一个属性side

side: ("front"or "back", default is "front") 是否要从文本的开头 (front) 或结尾 (back)

计算 n-gram

它将作为:

In: "babaloo"
Out: "oo", "loo", "aloo", "baloo"

KeywordTokenizerFactory:此tokenizer 将整个文本字段视为单个标记。

关于xml - 带空格的 Solr 子字符串搜索,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37213033/

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