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
结果如下
结果如下
将字段类型更改为字符串。
确保您有以下条目
<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 不区分大小写的时候
我想知道 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
结果如下
结果如下
将字段类型更改为字符串。
确保您有以下条目
<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 不区分大小写的时候