当我使用查询进行搜索时addr:s*
我得到......(这是虚拟数据)
addr=someword
addr=banana-sunny.or
addr=seventy
addr=salvation
我只想要那些以 开头的记录s
,但结果中的第二个记录以b
.
当我使用查询进行搜索时addr:s*
我得到......(这是虚拟数据)
addr=someword
addr=banana-sunny.or
addr=seventy
addr=salvation
我只想要那些以 开头的记录s
,但结果中的第二个记录以b
.
您可能正在对地址字段使用文本分析,将单词拆分为多个标记。
在这种情况下,单词“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>