我为我的项目创建了用于模糊匹配的自定义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次的令牌?
我想我在这里错过了什么,有什么帮助?
答案 0 :(得分:1)
得到答案..
Lucene QueryParser首先通过White Spaces对数据进行标记,然后使用分析器分析单个术语/标记。由于我的分析器是NGram(3,3),它不能在2个字符的术语/标记上生成任何标记。