在Lucene中使用多个单词的通配符查询

时间:2016-02-17 05:14:58

标签: java apache api lucene

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

1 个答案:

答案 0 :(得分:3)

您使用的是StandardAnalyzer,其结果是"Central West*",但不是Central We*

首先:StandardAnalyzer不会拆分CentralWest。所以你不能将CentralWest与短语“Central West”匹配(WordDelimiter Filter会这样做。)

很可能您使用的是没有通配符支持的查询解析器。并且很少有查询解析器在ComplexPhraseQueryParser等短语中支持通配符。

没有通配符支持,StandardAnalyzer在'West *'和'West'之间没有区别,所以你有匹配。 We*We处于we状态,因此您无法匹配。