Solr 搜索不包括短语的确切单词

Solr search exact word not including phrases

我想知道 solr 配置中是否有一种方法可以完全匹配并丢弃短语中的那些。

示例:
搜索字符串:"Hello"
结果应该是:"Hello"
并且不应包含:"Hello world"、"Hi, Hello"

它应该搜索与该词完全匹配的词,但在短语中忽略它。

谢谢。

我最初考虑的是邻近性,但您的情况不需要。

define a field of type String say amn_name_ss --这是一个存储的String

当使用 ""

搜索时,字符串将寻找精确搜索

例如:amn_name_ss:"Hello" 将 return 只有恰好具有值 Hello

的文档

创建文档为 {"id":"amn1","amn_name_ss":"Hello","type":"AMN"} {"id":"amn2","amn_name_ss":"Hello World","type":"AMN"}

查询: http://hostname:8080/solr/collection1/select?q=%3A&fq=type%3AAMN&wt=json&indent=true

结果如下

查询: http://hostname:8080/solr/collection1/select?q=amn_name_ss%3A%22Hello%22&fq=type%3AAMN&wt=json&indent=true

结果如下

将字段类型更改为字符串。

确保您有以下条目

<fieldType name="string" class="solr.StrField" sortMissingLast="true" omitNorms="true"/>

StrField类型没有分析,但是indexed/stored.

然后更改字段键的字段类型。

<field name="fieldName" type="string" indexed="true" stored="true"/>

有了这个,它将是精确搜索,因为不会有任何标记。

或者选项可以使用以下字段类型

<fieldType name="lowercase" class="solr.TextField" positionIncrementGap="100"> 
<analyzer> 
      <tokenizer class="solr.KeywordTokenizerFactory"/> 
      <filter class="solr.LowerCaseFilterFactory" /> 
</analyzer> 
</fieldType>

此处 KeywordTokenizer 不进行实际的标记化,因此整个输入字符串被保留为单个标记。

LowerCase TokenFilter 可以满足您的期望,这可能是您希望 sorting/searching 不区分大小写的时候