搜索Solr:匹配准确的结果Koh S*



我有一个如下的模式

 <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>

我的文件将是:

  1. 苏梅岛
  2. Koh Chang
  3. 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*

最新更新