Solr直接匹配搜索

Solr direct match search

我正在尝试测试 Solr 中的不同功能,我想创建一个仅 returns 直接匹配的基本文本搜索器。我有包含短语的简单文档:

[{
    "id": 1,
    "name": "one blue car"
},
{
    "id": 2,
    "name": "two blue cars"
}]

我的架构包括:

<field name="id" type="int" indexed="true" stored="true"/>
<field name="name" type="string" indexed="true" stored="true"/>
<field name="nameExact" type="text_exact" indexed="true" stored="false"/>
<field name="_version_" type="float" indexed="false" stored="false"/>

<copyField source="name" dest="nameExact"/>

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

我的 solrconfig 包括:

<requestHandler name="/select" class="solr.SearchHandler">
    <lst name="defaults">
        <str name="echoParams">explicit</str>
        <int name="rows">10</int>
        <str name="df">name</str>
    </lst>
</requestHandler>

我想搜索 "one blue car" 并接收 id = 1
的条目 这是实现我想要的目标的正确设置吗?

您需要为字符串定义字段类型。 (我希望你已经定义了这个)

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

提交的定义正确。

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

您可以使用像

这样的简单查询来搜索相同内容
q=name:"one blue car"&rows=100&wt=json&indent=true

您不需要定义新的字段名称和单独的字段类型来实现相同的目的。