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

时间:2015-08-04 03:36:04

标签: c# solr full-text-search config

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

例:
搜索字符串:“你好”
结果应该是:“你好”
并且不应该包含:“Hello world”,“嗨,你好”

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

感谢。

2 个答案:

答案 0 :(得分:1)

我最初在考虑接近度,但这不是你的情况所必需的。

定义String类型的字段,例如amn_name_ss - 这是一个存储的字符串

使用“”

搜索时,字符串会查找完全搜索

例如:amn_name_ss:“Hello”将仅返回具有值Hello

的文档

将文档创建为 { “ID”: “AMN1”, “amn_name_ss”: “你好”, “类型”: “AMN”} {“id”:“amn2”,“amn_name_ss”:“Hello World”,“type”:“AMN”}

查询: http://hostname:8080/solr/collection1/select?q= %3A &安培; FQ =类型%3AAMN&安培;重量= JSON&安培;缩进=真

将给出如下结果 enter image description here

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

将给出如下结果

enter image description here

答案 1 :(得分:1)

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

确保您拥有以下条目

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

不分析StrField类型,但索引/存储。

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

<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可以满足您的期望,当您希望排序/搜索不区分大小写时