gpt4 book ai didi

lucene - 如何检测 Lucene 自由文本搜索查询中的日期?

转载 作者:行者123 更新时间:2023-12-02 09:37:48 25 4
gpt4 key购买 nike

我们正在使用 Lucene 开发一个自由文本搜索框,用于搜索传递给用户的数据,例如电子邮件收件箱。我们希望允许该框处理日期,例如 5/1/2011。为了让事情变得更容易,我们将该功能的当前版本限制为仅两种日期格式:

mm/dd/yy
mm/dd/yyyy

对于我们的原型(prototype),我们破解了查询分析过程,尝试预处理查询字符串以查找这两个日期模式。那是大约 2 年前的事,当时我们使用的是 Lucene 2.4。我很好奇 Lucene 中是否有任何开箱即用的工具可以接受 DateFormat 并返回带有任何已识别日期的 TokenStream。浏览 Lucene 2.9 的 javadocs,我找到了这个类:

org.apache.lucene.analysis.sinks.DateRecognizerSinkFilter

这似乎可以满足我的需要,但它实现了一个 SinkFilter,这个概念似乎没有记录在 Lucene Wiki 中。有人用过这个过滤器吗?如果用过,最有效的使用方法是什么?

最佳答案

TeeSinkTokenFilter 的文档中有一些示例代码(无可否认,过于复杂)。 。请注意,DateRecognizerSinkFilter 的设计方式并不存储实际日期;它只是检测 token 是符合指定格式的日期。我要尝试的是重新实现 DateRecognizerSinkFilter 类以获取 DateFormat 实例数组,创建一个名为 DateAttribute (或类似的)的新 Attribute 类,并使用日期识别器子类将解析的日期设置到 DateAttribute 中,如果满足以下条件之一它的格式匹配。这样,您始终可以通过询问 DateAttribute 来测试是否具有有效日期,并将日期格式本地化为一个类。另一个优点是您不必处理多个接收器,从而简化了链接示例中的代码。

关于lucene - 如何检测 Lucene 自由文本搜索查询中的日期?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6294218/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com