• Solr4:查询参数fq的用法(对结果进行过滤;两组关键词组合查询)


    Solr查询参数文档可以参考:

    http://wiki.apache.org/solr/CommonQueryParameters#head-6522ef80f22d0e50d2f12ec487758577506d6002

    这里主要说一下fq参数的使用。

    1. 需求一

    搜索商户信息时,已经可以按指定关键词搜索;但有时需要缩小范围,比如在江苏省范围搜索,或者是苏州市范围内搜索。注意:不是指记录包含“江苏省”、"苏州市“关键词的,而是此记录的行政区域属性值是属于”江苏省“或者是”苏州市"的。

    2. 实现一

    1). schema.xml定义如下:

       <field name="detail_id" type="string" indexed="true" stored="true" required="true" multiValued="false" /> 
    
       <field name="category_id" type="int" indexed="true" stored="true" required="true"/> 
       <field name="province_id" type="int" indexed="true" stored="true" required="true"/> 
       <field name="district_id" type="int" indexed="true" stored="true" required="true"/> 

    这些编号应该是不需要分词、需要索引、是否存储视情况而定;我这里设计为需要存储,并且设计为不能为空。

    注意:千万别把这些field的type设计成中文分词的类型。

    2). JSP页面中包含类似于如下代码:

        // 代码片段一,获取查询参数
        String q = request.getParameter("q"); // 查询参数
        String cid = request.getParameter("cid"); // 分类
        String pid = request.getParameter("pid"); //
        String did = request.getParameter("did"); // 地区
    
    // 代码片段二,解析查询参数 StringBuilder sbFilter = new StringBuilder(); if(!did.equals("")){ // 地区标识优先级大于省市级别 sbFilter.append("+district_id:" + did); }else if(!pid.equals("")) { sbFilter.append("+province_id:" + pid); } if(!cid.equals("0")) { // 分类标识 sbFilter.append(" +category_id:" + cid); }
    // 代码片段三,初始化查询 SolrQuery params = new SolrQuery("text:(" + q + ")"); params.set("start", startRow); params.set("rows", PAGE_ROWS); params.set("fl", "detail_id,category_name,province_name,district_name,title,publish_time,detail_info"); params.set("sort", "publish_time desc"); params.addFilterQuery(sbFilter.toString());

    3). q与fq的不同

    如果单就上面的功能而言,把这些查询参数全部放在q中也能达到相关目的。但参数q有个副作用,如果正文中出现了id值,它会高亮的。比如说,查询江苏省的数据(江苏省的province_id=100),那么在搜索结果中如果包含了100这样的数字,这个100会被高亮显示的。

    4). fq还可以查询一个时间段时的数据,具体参考它的文档。

    3. 需求二

    要求实现两组关键词的组合查询。

    比如:两组关键词分别是(贪污、受贿)与(江苏省、苏州市),组合查询后输出结果是包含(贪污、江苏省)OR(贪污、苏州市)OR(受贿、江苏省)OR(受贿、苏州市)关键词的信息。

    4. 实现二

    实现方式请参考:Solr4:利用Filter实现两组关键词组合查询 

  • 相关阅读:
    1+X云计算(中级) 单节点部署应用商城系统(gpmall)
    1+X云计算 应用商城系统(gpmall)-遇到的问题以及解决办法
    1+X云计算平台运维与开发(中级)eNSP A~E卷 试题+答案
    vi&vim 基本使用方法
    yum针对软件包操作的常用命令
    本地yum源配置
    SpringCloud微服务初体验
    SpringBoot自定义注解拦截器,实现登录token验证
    MySQL建立SSL连接问题,设置useSSL=false显式禁用SSL,或者设置useSSL=true
    TPL事务
  • 原文地址:https://www.cnblogs.com/nayitian/p/3240145.html
Copyright © 2020-2023  润新知