gpt4 book ai didi

java - 如何选择Lucene中WordDelimiterFilter使用的分隔符?

转载 作者:行者123 更新时间:2023-11-30 06:50:55 26 4
gpt4 key购买 nike

我正在尝试将诸如电子邮件之类的词索引为电子邮件电子邮件电子邮件使用 Lucene 4.4.0。

Lucene 的 WordDelimiterFilter应该是理想的选择。但是,它将每个(?)非字母数字字符视为分隔符。因此,像 C++ 这样的术语被转换为 C,这不是我想要的。

因此是否可以自定义 WordDelimiterFilter 以使其使用我自己指定的分隔符?

最佳答案

您可以将“+”和其他字符显式定义为字母字符,这样它们就不会被过滤掉,并且会在搜索查询中得到考虑。

按照以下步骤进行定制

1) 在“索引”和查询“分析器下修改 WordDelimiterFilterFactory 并添加 types="alphatypes.txt"。

<filter catenateAll="0" catenateNumbers="0" catenateWords="0" class="solr.WordDelimiterFilterFactory" generateNumberParts="1" generateWordParts="1" splitOnCaseChange="1" types="alphatypes.txt"/>

根据您的情况设置其他参数

2)然后使用以下内容创建 alphatypes.txt(或任何适合您的名称)文件,并将其放置在与 schema.xml 文件相同的文件夹中。

注意:对于 # 字符,我们必须使用 unicode 值。

# A customized type mapping for WordDelimiterFilterFactory
# the allowable types are: LOWER, UPPER, ALPHA, DIGIT, ALPHANUM, SUBWORD_DELIM
#
# the default for any character without a mapping is always computed from
# Unicode character properties

+ => ALPHA
\u0023 => ALPHA

3) 重新加载核心,或重新启动 Solr。

4) 重新索引数据,以便缺失的字符包含在索引中

Solr jira 引用 https://issues.apache.org/jira/browse/SOLR-2059

关于java - 如何选择Lucene中WordDelimiterFilter使用的分隔符?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42793203/

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