solr 查询语法解析

版权声明:本文为博主原创文章,未经博主允许不得转载 https://blog.csdn.net/gs_albb/article/details/83065269

solr的查询语法是solr应用中查询的基础,下文将介绍一下solr查询中的基础语法。


内置查询函数

如果你想自定义搜索结果打分机制的话,你可以组合solr内置的函数。一般情况下,你可以设置defType=edismax;bf=[自定义函数] 来设置打分机制进行排序。

solr内置的查询函数,官方文档见 https://wiki.apache.org/solr/FunctionQuery ,中文翻译见 http://mxsfengg.iteye.com/blog/352191

The Standard Query Parser

  • ^=
    文档结构定义中,存在item_title,和shop_name两个字段,都是text_ik类型。如果item_title能够ik分词匹配到,分数设置为1。 再加上shop_name的匹配分数,可以使用下面的查询q:
    q=(item_title:毛衣)^=1 shop_name:毛衣

The DisMax Query Parser

DisMax查询解析器旨在处理用户输入的简单短语(没有复杂的语法),并根据每个字段的重要性使用不同的加权(提升)搜索多个字段中的各个术语。 其他选项使用户能够根据特定于每个用例的规则(独立于用户输入)影响分数。

  • bq
    bq(boost query)参数指定一个附加的可选查询子句,该子句将添加到用户的主查询中以影响分数。 例如,如果要为最近的文档添加相关性提升:
    q=cheese
    bq=date:[NOW/DAY-1YEAR TO NOW/DAY]
    
  • bf
    bf参数指定将用于构造FunctionQueries的函数(带有可选的boost),FunctionQueries将作为将影响分数的可选子句添加到用户的主查询中。 可以使用Solr原生支持的任何函数以及增强值。 例如:
    recip(rord(myfield),1,2,3)^1.5
    
    使用bf参数指定函数基本上只是将bq param与{!func}解析器结合使用的简写。
    例如,如果要首先显示最新文档,可以使用以下任一方法:
    bf=recip(rord(creationDate),1,1000,1000)
      ...or...
    bq={!func}recip(rord(creationDate),1,1000,1000)
    

猜你喜欢

转载自blog.csdn.net/gs_albb/article/details/83065269
今日推荐