我正在开发一个示例API,它接受要搜索的ColumnName
和value
。 API以XML格式搜索并返回相关结果。我正在使用Lucene的StandardAnalyser
。我有一个"Central West*"
字段的搜索词COMPANYNAME
。我的数据库中有COMPANYNAME
字段设置为"CentralWest"
的2条记录。当我使用上面提到的搜索短语进行搜索时,我得到了这两个记录作为我的结果。
但是当我用"Central We*"
搜索时,我没有得到任何结果。我不知道那是我面临的问题。我认为使用QueryParser
是最好的方法。是否有办法为StandardAnalyser
中的问题提供解决方案,我面临的问题是什么?
答案 0 :(得分:3)
您使用的是StandardAnalyzer
,其结果是"Central West*"
,但不是Central We*
。
首先:StandardAnalyzer不会拆分CentralWest。所以你不能将CentralWest与短语“Central West”匹配(WordDelimiter Filter会这样做。)
很可能您使用的是没有通配符支持的查询解析器。并且很少有查询解析器在ComplexPhraseQueryParser等短语中支持通配符。
没有通配符支持,StandardAnalyzer在'West *'和'West'之间没有区别,所以你有匹配。 We*
和We
处于we
状态,因此您无法匹配。