文档章节

solr:关于dismax的使用情况

momoHuang
 momoHuang
发布于 2013/07/18 15:23
字数 621
阅读 9347
收藏 5

首先说说 dismax这个功能,它是基于lucene的DisjunctionMaxQuery去 扩展的,就是说,实际上用到的就是DisjunctionMaxQuery的这个查询类。查询api,可以知道是 对查询的几个域中,取最大的打分,而不是想boolean查询那样,要几个域的查询的分数叠加。



1、
q.alt, 没有看明白

2、qf对默认查询增加权重比值,比如:fieldOne^1.9 fieldTwo fieldThree^5 ,值越大权重越大

也可以是  

1、bf内字段必须是索引的,该出填写的是查询函数   。提供一个强大的功能就是使用用户设置的公式来对文档的score进行计算。这里所说的公式也就是solr的function queries,使用bf参数来操作score。edismax支持boost参数来进行function query。可以使用bf或boost多次。bf的函数查看solr api文档http://wiki.apache.org/solr/FunctionQuery

最终的排序打分,可以根据 bf打分与 lucene的sorce 相加,得到最后打分

2、qf


3、mm ,
 mm=2 就是有两个符合搜索的词 就返回改条 .对应着lucene的类BooleanScorer2


eg:

性别:女  MUST
年龄:<25  SHOULD
胸围: >C should
收入: >10000 should

要符合两个条件才会被 hit,要不直接去掉


4、pf查询字段, 就是phrase fields的缩写, 这样在schema不用制定默认字段

5、ps,phrase slop, 坡度 ,相同于 编辑距离的值,

eg: document:"周杰伦“,query:”杰伦周“,这两个词,如果用 phrasequery,但 slop=2的时候,搜索不出来,当,slop=3的时候,可以搜索出来

6、qs

7、


8、tie:DisjunctionMaxQuery q = new DisjunctionMaxQuery(tie);

 这个查询是相当于布尔查询的 
不过里面的关系只能是should 
最后的分数不是相加,而是取最大值 

9、bq,就是boost queries ,bq参数可以用来指定多个查询,类似于automatic phrase boost

当是多个查询的时候,就是 BooleanClause.Occur.SHOULD查询,只有仅有一个查询并且

 if (1.0f == f.getBoost() && f instanceof BooleanQuery)  的时候,才是保留着原先的查询。

具体见:DisMaxQParser

10、uf





随便说一下 各个Query的不同做法

1、TermQuery,只是简单的按term 去查询?

2、BooleanQuery,布尔查询 ,与或?

3、RangeQuery

4、PrefixQuery就是使用前缀来进行查找的。

5、多关键字的搜索—PhraseQuery

6、FuzzyQuery是一种模糊查询,它可以简单地识别两个相近的词语。

7、使用通配符搜索—WildcardQuery


8、DisjunctionMaxQuery

© 著作权归作者所有

momoHuang
粉丝 4
博文 24
码字总数 10538
作品 0
深圳
私信 提问
加载中

评论(3)

z
zhangyanrourou
你好,请问你说的bf可以与score相加,请问怎么相加呢
momoHuang
momoHuang 博主

引用来自“ShoringChow”的评论

你好,文中你提到最终的排序打分,可以根据 bf打分与 lucene的sorce 相加,得到最后打分,在php中我可以获取到score数据,但是怎么让score值参与排序运算呢,谢谢0
Lucene本来就是根据 score值进行倒序的。
S
ShoringChow
你好,文中你提到最终的排序打分,可以根据 bf打分与 lucene的sorce 相加,得到最后打分,在php中我可以获取到score数据,但是怎么让score值参与排序运算呢,谢谢0
solr 常见的问题整理 -费元星

本文是我在开发过程中遇到的一些问题的整理,有些摘自网上别人的方法。 1. org.apache.solr.client.solrj.SolrServerException: Timeout occured while waiting response from server at: ht...

未来星狒狒
2016/02/29
0
0
Solr高亮与Field权重

Solr高亮 原理 做搜索时,高亮是很常见的需求,那么Solr肯定也为高亮提供了支持。先解释下Solr高亮的原理,在我们设置了需要高亮显示的Field之后,查询得到的返回结果会多出来下面的内容: ...

Zero零_度
2015/08/17
140
0
搜索引擎(Solr-搜索详解)

学习目标 1.掌握SOLR的搜索工作流程; 2.掌握solr搜索的表示语法及查询解析器 3.熟悉solr搜索的JSON格式 API Solr搜索流程介绍 回顾,使用 lucene进行搜索的步骤: Solr搜索的工作流程 查看内...

这很耳东先生
02/27
84
0
Solr的函数查询(FunctionQuery)

作用 通过函数查询让我们可以利用 numeric域的值或者与域相关的的某个特定的值的函数,来对文档进行评分。 如何使用 这里主要有两种方法可以使用函数查询,这两种方法都是通过solr http 接口...

Zero零_度
2015/08/17
3.7K
1
Apache Solr 3.1.0 发布,全文搜索服务

Apache Solr 是一个开源的搜索服务器。Solr 使用 Java 语言开发,主要基于 HTTP 和 Apache Lucene 实现。Apache Solr 中存储的资源是以 Document 为对象进行存储的。每个文档由一系列的 Fiel...

红薯
2011/03/31
1K
7

没有更多内容

加载失败,请刷新页面

加载更多

好程序员Java教程分享Zookeeper基本原理与运用场景

好程序员Java教程分享Zookeeper基本原理与运用场景一、什么是Zookeeper? zookeeper是一个分布式的一致性协调服务。 换句话说,也可以把zookeeper看成一个小型的分布式文件系统。但是和FastD...

好程序员官网
30分钟前
6
0
mysql表情符

1 修改表字段为utf8md4 ALTER table property_info MODIFY `address` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT NULL 2 MySQL数据库服务器配置文件mysqld.cn......

干死it
49分钟前
4
0
正则表达式的基本语法

本文摘自LTP.NET知识库。 正则表达式的形式一般如下: /love/ 其中位于“/”定界符之间的部分就是将要在目标对象中进行匹配的模式。 用户只要把希望查找匹配对象的模式内容放入“/”定界符之...

木庄
51分钟前
6
0
java 框架有哪些?

十大常用框架: 一、SpringMVC 二、Spring 三、Mybatis 四、Dubbo 五、Maven 六、RabbitMQ 七、Log4j 八、Ehcache 九、Redis 十、Shiro 延展阅读: 一、SpringMVC Spring Web MVC是一种基于J...

java框架开发者
51分钟前
10
0
细谈Mysql事务

文章原创于公众号:程序猿周先森。本平台不定时更新,喜欢我的文章,欢迎关注我的微信公众号。 上一篇着重谈到了MySQL锁的概念,里面谈到了事务的概念,其实大部分开发者对于事务肯定不陌生,...

程序猿周先森
今天
5
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部