zoukankan      html  css  js  c++  java
  • solr的基础使用

    查询运算符

    例如:http://localhost:8984/solr/mycore/select?q=*:*

    :  指定字段查指定值,如返回所有值q=*:*

    ?  匹配单个字符, 例如: q=title:??拳 可以匹配标题为“形意拳”的文档

    *  匹配零个或多个字符, 例如: q=title:*形意拳 或者 q=title:*拳 都可以匹配标题为“形意拳”的文档

    ~  表示模糊检索, 例如:q=title:xoodcopping~0.8 可以匹配到标题为“Woodchopping”的文档, 但是q=title:xoodcopping~0.9 就无法匹配到, ~后面的数组在0~1之间,数值越大相似度越高。

    AND 与操作符,例如: q=title:形意拳 AND type:sport 可以匹配到标题为形意拳并且类型为sport的文档

    OR  或操作符,例如: q=title:形意拳 OR title:悠波球 可以匹配到标题为形意拳或者悠波球的文档

    NOT 非操作符, 例如: q=type:sport NOT title:悠波球 可以匹配到所有类型为sport但是标题不是悠波球的文档

    ! 非操作符, 例如: q=type:sport !title:悠波球 可以匹配到所有类型为sport但是标题不是悠波球的文档

    - 非操作符, 例如: q=type:sport -title:悠波球 可以匹配到所有类型为sport但是标题不是悠波球的文档

    +  存在操作符,要求符号”+”后的项必须在文档相应的域中存在

    ()  用于构成子查询, 例如: q=type:sport AND ( group:sport OR title:悠波球 )

    []  包含范围检索,如检索某时间段记录,包含头尾,例如: q=date:[201507 TO 201510]

    {}  不包含范围检索,如检索某时间段记录,不包含头尾, 例如: q=date:{201507 TO 201510}

    查询参数

    q 指定查询条件, 条件项目以":"分割属性和值, 支持多个条件和子查询, 参考上面的查询运算符。

    fq 过滤条件,格式同参数q,fq是在使用q参数查询完成后,再针对结果进行过滤。

    sort 结果排序方式,支持desc和asc两种方式,例如:sort=score desc, price asc, sum(x_d, y_d) desc;  当不指定sort参数时,将会使用隐藏字段score进行desc排序。 

    start 结果偏移起始量

    rows 返回结果的数量,配合start参数可实现分页的查询

    fl Field List,指定返回结果中包含的字段, 默认返回除score等隐藏字段之外的所有字段,等同于fl=*,返回指定字段例如:fl=name, age

    df Default Field 默认查询的字段,如果在q中没有指定字段,例如:q=michael 的时候指定默认的字段 df=name, 等同于q=name:michael

    wt 响应的数据格式,支持格式:csv,geojson,javabin,json,php,phps,python,ruby,smile,velocity,xlsx,xml,sxlt

    命令行操作

    启动solr服务器 

    # solr start -p 8984

    创建core

    # solr create_core -c mycore 

     

    常用操作

    增加文档

    <add>
      <doc>
        <field name="id">1</field>  
        <field name="name">四格</field>  
        <field name="introduction">最长在家半年的死宅,三周热度,三天打鱼两天晒往</field>  
      </doc>  
    </add>
    <commit/>

    问题

    Solr中的q与fq参数的区别在那儿?

    原文链接:http://www.highersoft.net/html/notice/notice_311.html

    今天遇到一个问题,把相同的参数比如name:张三,放到q与fq,两者返回的结果完全不一样。

     经过debug发现,原因是这两个参数是solr查询的不同阶段使用的,所以结果不一样。

     如果用于q。那么,就会查所有name中包含"张三"的,然后order by score,这时就会按name的相似度来排序。

    而如果用fq,q设置为*:*。那么solr会先order by score,而因为条件是*:*,所以所有文档的相关性都是一样的,所以即使用fq过滤了,返回的最前面的却不是相关性最高的。

    综上所述,以相关性(score)为优先排序条件的,那么条件一定放在q参数中。

    个人推荐
    萨哈拉单板滑雪 https://sahala.suanhetao.com
  • 相关阅读:
    Android消息的提示,Toast吐司方式
    Java内部类
    Android环境配置及运行helloWord案例
    翻译Android API Guides: App Manifest
    Android Configuration介绍 (未完成)
    jquery之效果操作
    jquery之属性操作
    JQuery之dom文档操作
    jQuery之css操作
    jQuery选择器的优点
  • 原文地址:https://www.cnblogs.com/michaelluthor/p/8719495.html
Copyright © 2011-2022 走看看