查询问题---queryparse深入理解

查询问题,最直接的反馈就是页面出来的结果。
然后牵扯到的问题就一步一步深入了。
第一层:queryparse,其中关联分词,关联booleanquery or
phrasequery,关联boost。。。。
第二层:排序了,关联排序的策略、排序的得分公式
第三层:各种转换、过滤、筛选后的页面结果
这里重点将queryparse的问题。

对于boolean查询,可以完成细粒度的and
or,但是,会损失查询term之间的关联关系,例如不能直接反应term直接的距离关系。例如
上架宝贝,分词是上架|宝贝,boolean查询可能对上架、宝贝都有结果,但是,上架宝贝挨着的不一定靠前。因为booleanquery
直接的形式,得分是各维度和。

对于phrasequery,顾名思义短语查询,更符合“搜索用语”特征,输入的是什么就搜索什么,只过滤停用词、非term词,信息损失相对较少,同时保留term之间关联关系。当然有扩展那就是“智能”了。phrasequery既然是分词后的多词组合,分词不可避免丢失中间某些单字,从而严格的“精准”去搜,导致有时候没有结果。

用户转为希望 上架宝贝,上架、宝贝都有结果,并且上架宝贝挨着的靠前,也有甚至理解
上架优先、其次宝贝、其次上架宝贝。众口难调!

各种queryparse就是本着灵活性、信息不失真(当然都是靠人为的干扰了,强制的boost或者改写)去理解用户输入串。dismaqueryparse相对stardqueryparse最大的不同是,前者得分是求max,后者得分是求和。前者是多域联合,域之间的关联兼顾,而后者忽略了域之间的关联性。

采取booleanquery,需要schema中配置

<fieldType name="text" class="solr.TextField" positionIncrementGap="100" >  

solrconfig中配置

<luceneMatchVersion>LUCENE_34</luceneMatchVersion>
//

更多信息请参考链接

http://solr.pl/en/2010/07/14/solr-and-phrasequery-phrase-bonus-in-query-stage/

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

另外,booleanquery与phrasequery的选择,建议优先使用phrasequery。

时间: 2024-09-28 05:32:53

查询问题---queryparse深入理解的相关文章

T-SQL查询进阶-:快速理解游标

概述 游标是邪恶的! 在关系数据库中,我们对于查询的思考是面向集合的.而游标打破了这一规则,游标使得我们思考方式变为逐行进行.对于类C的开发人员来着,这样的思考方式会更加舒服. 正常面向集合的思维方式是: 而对于游标来说: 这也是为什么游标是邪恶的,它会使开发人员变懒,懒得去想用面向集合的查询方式实现某些功能. 同样的,在性能上,游标会吃更多的内存,减少可用的并发,占用宽带,锁定资源,当然还有更多的代码量-- 从游标对数据库的读取方式来说,不难看出游标为什么占用更多的资源,打个比方: 当你从AT

T-SQL查询进阶:深入理解子查询

引言 SQL有着非常强大且灵活的查询方式,而多表连接操作往往也可以用子查询进行替代,本篇文章将会讲述子查询的方方面面. 简介 子查询本质上是嵌套进其他SELECT,UPDATE,INSERT,DELETE语句的一个被限制的SELECT语句,在子查询中,只有下面几个子句可以使用 SELECT子句(必须) FROM子句(必选) WHERE子句(可选) GROUP BY(可选) HAVING(可选) ORDER BY(只有在TOP关键字被使用时才可用) 子查询也可以嵌套在其他子查询中,这个嵌套最多可达

站长应该知道的搜索引擎查询命令(二)

昨天为大家介绍了搜索引擎查询命令的两个常用命令组合,还没有看过的网友现在可以先看看<站长应该知道的搜索引擎查询命令>,相信看过的网友应该有所体会了,当然查询命令有很多,由于篇幅原因就没有介绍很多,只简单介绍了查询百度相关域的真实数据和文章被转载且保留版权的数量,今天继续给大家介绍其他高级命令组合的实际用途. 一.查询网站反链或相关域的组合命令 之前有一位朋友曾经问过我,怎么查询他的网站的外部链接,特别是想知道如何查询目标网站的反向链接,这里就给大家介绍下我是如何查询的. "INURL

Access 2007使用联合查询合并多个选择查询的结果

对于多个相似的选择查询,当您希望将它们返回的所有数据一起作为一个合并的集合查看时,便可以使用联合查询 本文将向您介绍如何根据两个或多个现有的选择查询创建联合查询,同时说明如何使用结构化查询语言 (SQL) 编写联合查询 为完成本文中的示例,您应该对如何创建和运行选择查询有基本的了解.有关如何创建选择查询的详细信息,请参阅请参阅部分中的链接 本文内容 联合查询基础知识联合查询有哪些功能? 联合查询可合并多个相似的选择查询的结果集 例如,假设您有两个表,一个用于存储有关客户的信息,另一个用于存储有关

PHP组合查询多条件查询实例代码第1/2页_php基础

   先向大家说明需求:按照我们系统的要求,我们将通过部门名称.员工姓名.PC名称.IP地址等等字段来进行组合查询从而得到想要的数据结果.那么,为了简单起见,我们用两个条件(部门名称.员工姓名)的组合查询来向大家说明这一技术技巧.当我们只输入部门名而员工姓名为空值时,那么部门内所有员工信息将被呈现,只有当你同时限制部门与员工姓名时,才能查询出唯一信息.     那就让我们开始.     首先建立查询页面search.php,不同于上次单一条件查询,这次我们需要两个条件的组合进行查询. <html

Lucene5学习之SpanQuery跨度查询

    SpanQuery下的子类有好几个,我就放一篇里集中说说.SpanQuery即跨度查询,首先要理解跨度这个概念,Lucene里跨度是用Spans这个类定义的,源码如下:   Java代码   /** Expert: an enumeration of span matches.  Used to implement span searching.   * Each span represents a range of term positions within a document.  

想找回丢在出租车的手机?你需要融合异构数据的城市级查询和推理

大包小包地打车从火车站回家,却发现手机落在出租车上,好不容易联系上司机,司机却说没找到.这可怎么办呢?近日,阿里巴巴-浙江大学前沿技术联合研究中心发表了最新研究成果VAUD,它可利用可视分析技术将城市级查询的门槛降到最低,不需要写查询语句,拖拖拽拽就能对城市轨迹进行分析和推理.有了 VAUD,从此我们可以轻松找回丢在出租车上的手机. 没错,只要有了出租车和手机移动轨迹的数据,只要在系统输入你上下车的时间和地点,就能找到匹配的出租车(增加路过的时空点可以提高匹配的准确度),再通过查找和出租车匹配的

详解mysql双查询注入教程

介绍一下双查询注入,有时候我们通过order by 语句获取到了确定的列数,可是当我们使用union select或union select all查询的时候, f4ck.net/index.php?id=-1 union select 1,2,3,4,5,6-- 却会出现一个错误提示,列数不一致. Different Number of Columns 而我们使用下面的语句: f4ck.net/index.php?id=1 and (select 1 from (select count(*)

SQL查询入门(中篇)_MsSql

引言 在前篇文章中(SQL查询入门(上篇),我对数据库查询的基本概念以及单表查询做了详细的解释,本篇文章中,主要说明SQL中的各种连接以及使用范围,以及更进一步的解释关系代数法和关系演算法对在同一条查询的不同思路. 多表连接简介 在关系数据库中,一个查询往往会涉及多个表,因为很少有数据库只有一个表,而如果大多查询只涉及到一个表的,那么那个表也往往低于第三范式,存在大量冗余和异常. 因此,连接(Join)就是一种把多个表连接成一个表的重要手段. 比如简单两个表连接学生表(Student)和班级(C