【发布时间】:2018-06-06 14:23:00
【问题描述】:
我正在实施 SOLR 搜索。当我输入“abc def”时,我想获取所有包含“abc def”的段落。例如,如果我有这些段落。
{
"paragraphs": ["abc def. bdbdbdbdbd, aa", "abd efe"]
},
{
"paragraphs": ["xyzabc def xyz", "fgh xx", "abcdef", "wwwabc defxxx"]
}
我想从第一个获取数据。完全匹配这个词组,所以不是另一个词组的一部分。如果我搜索“god dog”,则结果中不应包含“god doggo”。
问题是当我尝试使用查询 paragraphs : "abc def" 时,我得到空结果。
这是我的 schema.xml 的一部分:
<field name="paragraphs" type="text" indexed="true" stored="true" required="true" multiValued="true"/>
<types>
<fieldType name="text" class="solr.TextField" sortMissingLast="true" omitNorms="true">
<analyzer type="index">
<tokenizer class="solr.KeywordTokenizerFactory"/>
<filter class="solr.ASCIIFoldingFilterFactory" preserveOriginal="true"/>
<filter class="solr.LowerCaseFilterFactory"/>
</analyzer>
<analyzer type="query">
<tokenizer class="solr.KeywordTokenizerFactory"/>
<filter class="solr.ASCIIFoldingFilterFactory" preserveOriginal="true">
<filter class="solr.LowerCaseFilterFactory"/>
</analyzer>
</fieldType>
</types>
我尝试使用 StandardTokenizerFactory 而不是 KeywordTokenizerFactory 但结果是一样的。我可以使用(*abc*) 获取数据,但这也会返回xabcz 之类的元素,我对此不感兴趣。
【问题讨论】:
标签: solr