【问题标题】:Lucene: How to add a new term to query using a Filter?Lucene:如何使用过滤器添加新术语进行查询?
【发布时间】:2020-07-08 11:13:49
【问题描述】:

我正在尝试编写一个 Lucene 过滤器,它将“what's”替换为“what is”、“can't”替换为“cannot”等。

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

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

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

实现此目的的正确方法是什么?我需要创建分词器吗? (理想情况下,我想保留 StandardTokenizer 并添加到它而不是替换它)

【问题讨论】:

  • 我不确定您如何可靠地替换诸如 he's 之类的东西 - 它可能是 he hashe is,具体取决于上下文(“他在这里”与“他明白了” ”)。另一方面,Lucene 可以使用同义词来扩充您的索引词(其中he hashe ishe's 的同义词)。我有一个例子,如果你认为它可能有用的话。但这不是一个替代过程 - 所以它可能没有帮助。

标签: java search nlp lucene


【解决方案1】:

这可以使用分词器而不是过滤器来解决。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-02-15
    • 2015-04-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-08-19
    • 2019-09-10
    相关资源
    最近更新 更多