【问题标题】:Wildcard Queries with multiple words in LuceneLucene中具有多个单词的通配符查询
【发布时间】:2016-02-17 05:14:57
【问题描述】:

我正在开发一个示例 API,它接受要搜索的 ColumnNamevalue。 API 以 XML 格式搜索并返回相关结果。我正在使用 Lucene 的StandardAnalyser。我有一个搜索短语 "Central West*" 用于 COMPANYNAME 字段。我的数据库中有 2 条记录,COMPANYNAME 字段设置为 "CentralWest"。当我使用上述搜索短语进行搜索时,我将这两条记录作为我的结果。 但是当我用"Central We*" 搜索时,我没有得到任何结果。我不知道那是我面临的问题。我读到喜欢使用QueryParser 是最好的方法。 StandardAnalyser 中的问题是否没有办法提供解决方案,我面临的问题是什么?

【问题讨论】:

  • 你试过模糊搜索吗?
  • 谢谢@DanielJipa。不,我还没有尝试过模糊搜索。这会是一个解决方案吗?
  • 我在搜索词序可能不同的短语时使用。请参阅相关文档。

标签: java apache api lucene


【解决方案1】:

您正在使用StandardAnalyzer 并获得短语"Central West*" 的结果,但没有Central We* 的结果。

首先:StandardAnalyzer 不会拆分 CentralWest。因此,您不能将 CentralWest 与短语“Central West”匹配(WordDelimiter Filter 可以)。

您很可能正在使用不支持通配符的查询解析器。而且很少有查询解析器支持像ComplexPhraseQueryParser 这样的短语中的通配符。

如果不支持通配符,StandardAnalyzer 在“West*”和“West”之间没有区别,因此您可以匹配。 We*Wewe 一样,所以你没有对手。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-10-01
    • 1970-01-01
    • 2013-12-07
    • 1970-01-01
    • 2014-06-07
    相关资源
    最近更新 更多