我有一个如下的模式
<fieldType name="text" class="solr.TextField" positionIncrementGap="100">
<analyzer type="index">
<tokenizer class="solr.KeywordTokenizerFactory"/>
<filter class="solr.LowerCaseFilterFactory"/>
</analyzer>
<analyzer type="query">
<tokenizer class="solr.KeywordTokenizerFactory"/>
<filter class="solr.LowerCaseFilterFactory"/>
</analyzer>
</fieldType>
我的文件将是:
- 苏梅岛
- Koh Chang
- Koh Lanta
当我搜索Koh*时,它返回3个结果。它接受了。但当我搜索koh S*时。它返回零结果。我希望结果只有苏梅岛
我假设您想要使用通配符查询。这取决于您正在使用的查询分析器。如果您使用的是Standard Query Parser、Dismax或eDismax,那么所有这些都不支持通配符查询。
老实说,如果您使用Solr搜索通配符查询,您可能使用了错误的工具作为解决方案,您可以使用任何SQL数据库,并在where子句中使用类似"Koh S%"的文本,这将为您提供所需内容。
但无论如何,要在Solr中使用通配符查询,您需要直接使用Lucene查询解析器。为此,请使用以下查询:
http://localhost:8983/solr/core/select?q={!lucene df=text}Koh S*