我正在尝试使用Lucene 4.4.0将e-mail
,email
和e 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.