4

当我使用查询进行搜索时addr:s*

我得到......(这是虚拟数据)

addr=someword
addr=banana-sunny.or
addr=seventy
addr=salvation

我只想要那些以 开头的记录s,但结果中的第二个记录以b.

4

1 回答 1

4

您可能正在对地址字段使用文本分析,将单词拆分为多个标记。
在这种情况下,单词“banana-sunny”可能会拆分为多个标记(banana、sunny 或 )。
因此,对 s* 的搜索将返回结果。
如果您不想拆分,请使用 KeywordTokenizerFactory 和其他过滤器定义新的字段类型。例如

<fieldType name="text_string" class="solr.TextField" sortMissingLast="true" omitNorms="true">
  <analyzer>
    <tokenizer class="solr.KeywordTokenizerFactory"/>
    <filter class="solr.LowerCaseFilterFactory" />
  </analyzer>
</fieldType>
于 2013-01-31T04:25:52.503 回答