【发布时间】:2017-02-16 10:19:13
【问题描述】:
我正在使用 Solr 6 来实现一个搜索引擎。我面临的问题是,当我搜索单词时,它首先返回一些其他结果,而实际查询位于第 6 位。
例如,我正在搜索 Cafe 9
它返回给我这个...
我想要的是它显示 Cafe 9 在第一名,然后其他结果因为 Cafe 9 是完全匹配的..
我已经为 text_general 类型的所有字段编制了索引,并附上了 schema.xml。
提前致谢。
<fieldType name="text_general" class="solr.TextField" positionIncrementGap="100">
<analyzer type="index">
<tokenizer class="solr.StandardTokenizerFactory"/>
<filter class="solr.StopFilterFactory" ignoreCase="true" words="stopwords.txt" />
<!-- in this example, we will only use synonyms at query time
<filter class="solr.SynonymFilterFactory" synonyms="index_synonyms.txt" ignoreCase="true" expand="false"/>
-->
<filter class="solr.ApostropheFilterFactory"/>
<filter class="solr.ShingleFilterFactory" maxShingleSize="5" outputUnigrams="true"/>
<filter class="solr.LowerCaseFilterFactory"/>
</analyzer>
<analyzer type="query">
<tokenizer class="solr.StandardTokenizerFactory"/>
<filter class="solr.StopFilterFactory" ignoreCase="true" words="stopwords.txt" />
<filter class="solr.SynonymFilterFactory" synonyms="synonyms.txt" ignoreCase="true" expand="true"/>
<filter class="solr.ApostropheFilterFactory"/>
<!-- <filter class="solr.ShingleFilterFactory" maxShingleSize="5" outputUnigrams="true"/> -->
<filter class="solr.LowerCaseFilterFactory"/>
</analyzer>
</fieldType>
【问题讨论】:
-
如果您正在寻找完全匹配,您可以使用字符串作为 fieldType 或使用关键字标记器来索引数据...
-
您如何查询您的索引?如果您使用的是 dismax/edismax,请尝试将
pf/pf2权重应用于字段。您是否只查询名称字段? -
是的,我正在查询名称字段。 localhost:8983/solr/abc/select?q=name:(cafe 9) ...这是我的搜索网址..