查询问题---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

另外,booleanqueryphrasequery的选择,建议优先使用phrasequery

目录
相关文章
|
SQL Oracle 关系型数据库
使用JSqlParser 解析sql
使用JSqlParser 解析sql
2616 0
|
2月前
|
存储 关系型数据库 MySQL
MySQL MATCH 函数如何使用 WITH QUERY EXPANSION?
【9月更文挑战第2天】MySQL MATCH 函数如何使用 WITH QUERY EXPANSION?
44 0
|
6月前
|
XML SQL JSON
query 与 params:选择正确的参数传递方式
query 与 params:选择正确的参数传递方式
|
SQL 存储 安全
PageHelper不安全的分页问题,导致ParserException: syntax error, error in :&#39;it 1 LIMIT ? &#39;, expect LIMIT, actual ...
PageHelper不安全的分页问题,导致ParserException: syntax error, error in :&#39;it 1 LIMIT ? &#39;, expect LIMIT, actual ...
185 0
|
SQL 存储 算法
Mysql(四)分页&Join&Exist&count.md
Mysql(四)分页&Join&Exist&count.md
146 0
FastAPI(5)- 查询参数 Query Parameters
FastAPI(5)- 查询参数 Query Parameters
277 0
FastAPI(5)- 查询参数 Query Parameters
|
自然语言处理
Lucene QueryParser的一个"解析异常"
假期重新梳理了下之前在新浪博客的历史文档(新浪博客已下线),将一些内容重新搬到这里。 本文Lucene QueryParser的一个解析异常分析。
116 0
|
SQL Java 数据库
PreparedStatement 模糊匹配 结果却:Parameter index out of range (1 > number of parameters, which is 0)
PreparedStatement 模糊匹配 结果却:Parameter index out of range (1 > number of parameters, which is 0)
475 0
|
自然语言处理
查询问题---queryparse深入理解
查询问题,最直接的反馈就是页面出来的结果。然后牵扯到的问题就一步一步深入了。第一层:queryparse,其中关联分词,关联booleanquery orphrasequery,关联boost。。。。第二层:排序了,关联排序的策略、排序的得分公式第三层:各种转换、过滤、筛选后的页面结果这里重点将q.
1810 3