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

时间:2017-03-14 17:53:09

标签: java lucene

我正在尝试使用Lucene 4.4.0将e-mailemaile mail等字词编入索引。

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

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

1 个答案:

答案 0 :(得分:1)

< p>您可以将'+'和其他字符明确定义为字母字符,以便不会过滤掉它们,并在搜索查询中考虑它们。< / p> < p>按照以下步骤进行自定义< / p> < p> 1)在“index”和查询“分析器修改WordDelimiterFilterFactory并添加types =”alphatypes.txt“。< / p> < pre>< code>< filter catenateAll =“0”catenateNumbers =“0”catenateWords =“0”class =“solr.WordDelimiterFilterFactory”generateNumberParts =“1”generateWordParts =“1”splitOnCaseChange =“1”types = “alphatypes.txt”/> < /代码>< /预> < p>根据您的情况设置另一个参数< / p> < p> 2)然后使用以下内容创建alphatypes.txt(或任何适合您的名称)文件,并将其放在与schema.xml文件相同的文件夹中。 < / p为H. < p>注意:对于#字符,我们必须使用unicode值。< / p> < pre>< code> #WordDelimiterFilterFactory的自定义类型映射 #允许的类型是:LOWER,UPPER,ALPHA,DIGIT,ALPHANUM,SUBWORD_DELIM # #任何没有映射的字符的默认值始终从中计算 #Unicode字符属性 + => Α \ u0023 => Α < /代码>< /预> < p> 3)重新加载核心,或重新启动Solr。< / p> < p> 4)重新索引数据,以便缺失的字符包含在索引< / p>中 < p> Solr jira reference< a href =“https://issues.apache.org/jira/browse/SOLR-2059"rel =”nofollow noreferrer“> https://cheues.apache.org/jira /浏览/ SOLR-2059< / A>< / p为H.