短语查询的Solr语法

时间:2018-07-05 09:13:12

标签: solr lucene

我有一个定义如下的字段:

"replace-field": {
    "name":"search_words",
    "type":"lowercase",
    "stored":true,
    "indexed": true,
    "multiValued": true
}

包含句子作为数组(因此multiValued:true):

"id":500
"search_words":["How much oil should you pour into the engine",
          "How important is engine oil?]

当用户输入短语“ engine oil”时,我应该如何创建一个查询来返回该文档(id = 500)? 使用单项查询,我可以使用*engine*,它会发现文档engine位于句子的中间,但是我找不到找到句子中短语的方法。甚至可以使用solr吗?

1 个答案:

答案 0 :(得分:3)

Solr支持短语搜索,这是它的真正目的。默认情况下,通配符搜索并不是真正应该使用Solr的方式-字段类型应告诉Solr如何处理字段中的文本,以使您在常规查询中获得匹配。

在这种情况下,标准text_en可能会正常工作,或者使用带有标准标记生成器和小写过滤器的字段定义(可能还可以使用WordDelimiterGraphFilter来摆脱特殊字符)。

查询将为search_words:"engine oil"