solr6.1 查询优化

订阅到有道阅读
场景要求:

  1. 在title和content两个字段中寻找 title
  2. 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时会报错。

  • 4
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值