gpt4 book ai didi

java - SoLR 中具有特殊字符的字段排序

转载 作者:行者123 更新时间:2023-12-01 15:43:50 24 4
gpt4 key购买 nike

我是 SoLR 索引方面的新手。我想对具有不同值的位置字段进行排序。它还包含以 'sAmerica、#'Japan、%India 等开头的值。

现在,当我对此字段进行排序时,我确实想考虑特殊字符,例如 's、'#、!、~ 等。我想要排序,它将忽略这个字符并返回类似的结果美国排名第一,%印度排名第二,#'日本排名第三。

如何让它成为可能?我正在使用 PatternReplaceFilterFactory,但不知道这一点。

  <analyzer type="query">
<tokenizer class="solr.KeywordTokenizerFactory"/>
<filter class="solr.LowerCaseFilterFactory" />
<filter class="solr.WordDelimiterFilterFactory" catenateWords="1" />
<filter class="solr.PatternReplaceFilterFactory" pattern="'s" replacement="" replace="all" />
</analyzer>
</fieldType>

最佳答案

如果您想忽略特殊字符,请尝试使用以下字段类型。
这将小写单词并连接单词,排除所有特殊字符。

    <fieldType name="string_sort" class="solr.TextField" positionIncrementGap="1">
<analyzer type="index">
<tokenizer class="solr.KeywordTokenizerFactory" />
<filter class="solr.LowerCaseFilterFactory" />
<filter class="solr.WordDelimiterFilterFactory" catenateWords="1" />
</analyzer>
</fieldType>

但是,这对于 'sAmerica 不起作用,因为 s 不是特殊字符。

<filter class="solr.PatternReplaceFilterFactory" pattern="'s" replacement="" replace="all" />

如果这是固定模式,您需要将其替换为上面的单词分隔符之前。

编辑 - 您使用此配置吗?

<fieldType name="string_sort" class="solr.TextField" positionIncrementGap="1">
<analyzer type="index">
<tokenizer class="solr.KeywordTokenizerFactory" />
<filter class="solr.LowerCaseFilterFactory" />
<filter class="solr.PatternReplaceFilterFactory" pattern="'s" replacement="" replace="all" />
<filter class="solr.WordDelimiterFilterFactory" catenateWords="1" />
</analyzer>
</fieldType>

通过分析测试了以下内容,并生成了以下标记 -

KT - 阿尔加维
LCF-'萨尔加维
PRF - 阿尔加维
WDF - 阿尔加维

你能检查一下分析吗?

关于java - SoLR 中具有特殊字符的字段排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7528723/

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