- 在title和content两个字段中寻找 title
- title占的权重> content占的权重
1.在managed-schema中配置
<field name="title" type="text_smartcn" indexed="true" stored="true" />
<field name="content" type="text_ik" indexed="true" stored="true" />
<field name="searchText" type="text_ik" indexed="true" stored="true" multiValued="true" />
<!--create copy field-->
<copyField source="title" dest="searchText" />
<copyField source="content" dest="searchText" />
<!-- SolrQueryParser configuration: defaultOperator="AND|OR" -->
<solrQueryParser defaultOperator="AND"/>
说明:
a)里头定义了一个copyField:searchText,此字段为:title+content,并把这个字段设置为默认查询字段。意思是查询时,默认查询这两个字段的内容。这样比在q中设置title:text or content:text的效率要高很多。
b)把solrQueryParser设置为AND,事实上,大多情况下,我们是习惯使用AND为条件查询,而非OR
2、加入一个查询Handler到solrconfig.xml的当中:
<requestHandler name="/browse" class="solr.SearchHandler" default="true" >
<lst name="defaults">
<str name="defType">edismax</str>
<str name="bf">
sum(linear(vip,1000,0),linear(sqrt(log(linear(point,1,2))),100,0),sqrt(log(ms(createTime))))
</str>
<!--<str name="pf">
searchText
</str>
<str name="qf">
subject^1 content^0.8
</str>-->
</lst>
</requestHandler>
说明:
a)上面的default=”true”意思为设置为默认的查询handler(记得把原standard中的default=”true”删除掉)
b)见已经被注释的这段:
<!--<str name="pf">
searchText
</str>
<str name="qf">
title^1 content^0.8
</str>-->
这是简单的不使用bf的排序加权方式,可以用于应付简单的排序,具体pf/qf的使用,简单的来说,qf是query field的简称,意思为要在哪个字段上搜索;qf是phrase field的简称,可以正对不同的字段打分。
注意:本文中or和and混用。当solrQueryParser选择or时,在qf中设置title^1 content^0.8后,当title中不包含text时会报错。