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