我试图测试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的条目 这是实现我想要的正确设置吗?
答案 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来实现相同的目的。