Solr直接匹配搜索

时间:2015-03-05 14:33:40

标签: solr

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

[{
    "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>

我想搜索一辆蓝色汽车&#34;并收到id = 1的条目 这是实现我想要的正确设置吗?

1 个答案:

答案 0 :(得分:0)

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

<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

您不需要定义新的字段nameExact和单独的fieldType来实现相同的目的。