在Solr中按多个单词搜索文档

问题描述

我有文件

[
  { "id": 1,"title": "next notebook" },{ "id": 2,"title": "next thing" }
]

title字段类型为

<fieldType name="managed_en" positionIncrementGap="100" class="solr.TextField">
  <analyzer type="index">
    <tokenizer class="solr.StandardTokenizerFactory"/>
    <filter class="solr.ManagedStopFilterFactory" managed="english" />
    <filter class="solr.ManagedSynonymGraphFilterFactory" managed="english" />
    <filter class="solr.FlattenGraphFilterFactory"/> <!-- required on index analyzers after graph filters -->
  </analyzer>
  <analyzer type="query">
    <tokenizer class="solr.StandardTokenizerFactory"/>
    <filter class="solr.ManagedStopFilterFactory" managed="english" />
    <filter class="solr.ManagedSynonymGraphFilterFactory" managed="english" />
  </analyzer>
</fieldType>

我正在尝试搜索next thing,因此请求为/select?q=title%20next%20thing

我希望带有id: 2的文档位于顶部,但是顺序与添加的顺序相同,并且得分也与0.3979403相同

如果标题中的查询词多于顶部,该查询应如何实现?

解决方法

此查询正在默认搜索字段(df)中搜索标题,下一个,并且%20是空格字符。

q = title%20next%20thing

尝试类似q = next%20thing&df = title

,

您的查询在默认字段上被视为OR

q:next thing

如注释中所述,您必须指定字段。否则,您可以提供默认字段的列表,在这些字段中应查找您的搜索词。

q=title:next thing

两种方法都是正确的。如果您有要搜索的特定字段,则应提及它。否则,要搜索默认字段,您可以将名称保留为可选。