我正在尝试编写一个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并添加到它中,而不是替换它(
这可以使用标记化器而不是过滤器来解决。