我正在与solr搜索一起工作。在搜索短语时,排名不正常。对于ex,如果我搜索"标题:图形设计师需要",那么将所有三个首先都放在顶部,然后有两个单词,然后单个单词。
我希望结果以下序列:
"title": "Specification Graphic Designers Need To Know Every Day",
"title": "Graphic Designers: Insider Secrets from Top Designers",
"title": "Graphic ElementsUnique Elements for Distinctive Designs",
<field name="title" type="case_sensitive" indexed="true" stored="true" required="false" multiValued="false" omitNorms="true"/>
<fieldType name="case_sensitive" class="solr.TextField" positionIncrementGap="100">
<analyzer type="index">
<tokenizer class="solr.StandardTokenizerFactory"/>
<filter class="solr.StopFilterFactory" ignoreCase="true" words="stopwords.txt"/>
<filter class="solr.LowerCaseFilterFactory"/>
<filter class="solr.SnowballPorterFilterFactory"/>
</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.LowerCaseFilterFactory"/>
<filter class="solr.SnowballPorterFilterFactory"/>
</analyzer>
</fieldType>
您的查询并不意味着"在字段中找到所有这些单词title
"。
该查询被解析为"在title
中搜索Graphics
,默认搜索字段中的Designers
和默认搜索字段中的Need
。
您必须将每个学期的字段名称前缀,或将qf
与(e(分配一起使用。一种选项是使用title:(Graphics Designers Need)
或使用Edismax:q=Graphics Designers Need&qf=title
。
使用debugQuery=true
查看如何计算每个文档的分数。