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
  • 相关阅读:
    node
    github
    [模块] pdf转图片-pdf2image
    python 15 自定义模块 随机数 时间模块
    python 14 装饰器
    python 13 内置函数II 匿名函数 闭包
    python 12 生成器 列表推导式 内置函数I
    python 11 函数名 迭代器
    python 10 形参角度 名称空间 加载顺序
    python 09 函数参数初识
  • 原文地址:https://www.cnblogs.com/michaelluthor/p/8719495.html
Copyright © 2011-2022 走看看