zoukankan      html  css  js  c++  java
  • solr 重要的知识点

    1 solr 查询参数说明

    常用

    1) q - 查询字符串,必须的。
    2) fl - 指定返回那些字段内容,用逗号或空格分隔多个。
    3) start - 返回第一条记录在完整找到结果中的偏移位置, 0 开始,一般分页用。
    4) rows - 指定返回结果最多有多少条记录,配合 start 来实现分页。
    5) sort - 排序,格式: sort=<field name>+<desc|asc>[,<field name>+<desc|asc>]… 。示例:( inStock desc, price asc)表示先 “inStock” 降序, 再 “price” 升序,默认是相关性降序。注:排序字段 只能针对数值型如: int,dobuble 等…
    6) wt - (writer type)指定输出格式,可以有 xml, json, php, phps, 后面 solr 1.3 增加的,要用通知我们,因为默认没有打开。
    7) fq - ( filter query)过虑查询,作用:在 q 查询符合结果中同时是 fq 查询符合的,例如:q=mm&fq=date_time:[20081001 TO 20091031],找关键字 mm,并且 date_time 是 2008100120091031 之间的。官方文档:http://wiki.apache.org/solr/CommonQueryParameters#head-6522ef80f22d0e50d2f12ec487758577506d6002

    2) 不常用

    1) q.op - 覆盖 schema.xml 的 defaultOperator(有空格时用"AND"还是用"OR"操作逻辑),一般默认指定
    2) df - 默认的查询字段,一般默认指定
    3) qt - ( query type)指定那个类型来处理查询请求,一般不用指定,默认是 standard。
    3) 其它
    1) indent - 返回的结果是否缩进,默认关闭,用 indent=true|on 开启,一般调试 json,php,phps,ruby 输出才有必
    要用这个参数。
    2) version - 查询语法的版本,建议不使用它,由服务器指定默认值。

    2 solr检索运算符

    1. “ :” 指定字段查指定值,如返回所有值*:*
    2. “ ?” 表示单个任意字符的通配
    3. “ *” 表示多个任意字符的通配(不能在检索的项开始使用*或者?符号)
    4.“ ~” 表示模糊检索,如检索拼写类似于” roam”的项这样写: roam~将找到形如foam和roams的单词; roam~0.8,检索返回相似度在0.8以上的记录。
    5. 邻近检索,如检索相隔10个单词的” apache”和” jakarta”,” jakarta apache” ~10
    6. “ ^” 控制相关度检索,如检索jakarta apache,同时希望去让” jakarta”的相关度更加好,那么在其后加上”^”符号和增量值,即jakarta^4 apache
    7. 布尔操作符AND、 ||
    8. 布尔操作符OR、 &&
    9. 布尔操作符NOT、 !、 - (排除操作符不能单独与项使用构成查询)
    10.“ +” 存在操作符,要求符号” +”后的项必须在文档相应的域中存在
    11. ( ) 用于构成子查询
    12. [] 包含范围检索,如检索某时间段记录,包含头尾, date:[200707 TO 200710]
    13. {} 不包含范围检索,如检索某时间段记录,不包含头尾 date:{200707 TO 200710} 注:范围检索字段只适用于:String,int,dobule,date不能用于long型的字段
    14.  转义操作符,特殊字符包括+ - && || ! ( ) { } [ ] ^ ” ~ * ? : 

    3 字段增加权重

    在很多时候,我们可能会需要增加某一个字段的权重,以合理的显示搜索结果。
    例如:有一个schma,有三个字段: chapterId, title, content. 我们希望某一个关键字如果在title中匹配了,就要优先显示,而在content中匹配了,就放在搜索结果的后面。当然,如果两者同时匹配当然没什么好说的了。看看solr中如何做到吧。
    title:(test1 test2)^4 content:(test1 test2)
    给title字段增加权重,优先匹配,关于^后面的数字4,经过我测试,最佳值应该是有n个字段就写成n+1,当然希望大家能更好的去测试!

     4 facet 字段分组

    http://wiki.apache.org/solr/SimpleFacetParameters

    1.facet.field  
    
    分组的字段
    
    2.facet.prefix 
    
    表示Facet字段前缀
    
    3.facet.limit 
    
    Facet字段返回条数
    
    4.facet.offset
    
    开始条数,偏移量,它与facet.limit配合使用可以达到分页的效果
    
    5.facet.mincount 
    
    Facet字段最小count,默认为0
    
    6.facet.missing 
    
    如果为on或true,那么将统计那些Facet字段值为null的记录
    
    7.facet.method 
    
    取值为enum或fc,默认为fc, fc表示Field Cache
    
    8.facet.enum.cache.minDf 
    
    当facet.method=enum时,参数起作用,文档内出现某个关键字的最少次数

    4.1 JSON Facet API (solr 5.1)

    http://yonik.com/json-facet-api/

    Count Distinct in Solr (实现对某个字段进行Distinct 的统计)

    $ curl http://localhost:8983/solr/techproducts/query -d '
    q=*:*&
    json.facet={
      x : "unique(manu_exact)"    // manu_exact is the manufacturer indexed as a single string
    }

     

  • 相关阅读:
    PyQuery基本操作介绍
    JuPyter(IPython) Notebook中通过pip安装第三方Python Module
    PyQuery查询html信息
    Windows10 磁盘活动时间百分之百导致系统卡顿解决方法
    Django中文无法转换成latin-1编码的解决方案
    Spring Security核心概念介绍
    正则表达式之基本原理
    java基础类型源码解析之HashMap
    java基础类型源码解析之String
    java集合类型源码解析之PriorityQueue
  • 原文地址:https://www.cnblogs.com/zhanhengzong/p/4573766.html
Copyright © 2011-2022 走看看