使用Queryparser的Lucene NGram标记器

时间:2014-04-16 22:49:52

标签: lucene

我为我的项目创建了用于模糊匹配的自定义trigram分析器(NGramTokenizer(Version.LUCENE_44,reader,3,3)) - 指定令牌大小min 3和max 3

在索引时,我得到了正确的三元组令牌,但是当我在查询时使用相同的分析器时(通过QueryParser),它的跳过令牌少于3个字符。

实施例

索引文件 - 嗨Rushik

索引三元组 - hi_,i_r,rus,ush,shi,hik(使用Luke索引读取器检查)

查询 - 嗨Rushik AB XYZ。

Parsed Query(QueryParser结果) (name_data:rus name_data:ush name_data:shi name_data:hik)name_data:xyz

如您所见,查询解析器删除了少于3个字符的标记。 我明白我在标记化过程中指定了3,3但在这种情况下,索引也应该跳过少于3次的令牌?

我想我在这里错过了什么,有什么帮助?

1 个答案:

答案 0 :(得分:1)

得到答案..

Lucene QueryParser首先通过White Spaces对数据进行标记,然后使用分析器分析单个术语/标记。由于我的分析器是NGram(3,3),它不能在2个字符的术语/标记上生成任何标记。