Lucene:如何使用Filter添加新的术语进行查询



我正在尝试编写一个Lucene过滤器,它将"what's"替换为"Whatis",将"can't"替换为‘cannot’等术语。

incrementToken()中,如果术语是我要替换的字符串之一,我会计算一个替换字符串(例如what's->Whatis(,并将其推送到CharTermAttribute:

termAttr.copyBuffer(replacement.toCharArray, 0, replacement.length)

但这似乎不起作用,当我搜索"what’s"时,我仍然会得到包含"what‘s"的结果,而不是将字符串视为"what is"。

实现这一目标的正确方法是什么?我需要创建一个令牌化器吗?(理想情况下,我想保留StandardTokenizer并添加到它中,而不是替换它(

这可以使用标记化器而不是过滤器来解决。

最新更新