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

目录
相关文章
|
机器学习/深度学习 自然语言处理 算法
DL应用:query生成和query推荐
引言  在机器翻译、图片描述、语义蕴涵、语音识别和文本摘要中,序列到序列的问题已经有太多大牛研究了,也取得了很多突破。谷歌的Attention is all you need[1],舍弃并超越了主流的rnn与cnn序列建模框架,刷出了新的state of the art,这种大胆创新的精神值得我们学习。
15640 1
|
1月前
|
存储 关系型数据库 MySQL
MySQL MATCH 函数如何使用 WITH QUERY EXPANSION?
【9月更文挑战第2天】MySQL MATCH 函数如何使用 WITH QUERY EXPANSION?
29 0
|
5月前
|
XML SQL JSON
query 与 params:选择正确的参数传递方式
query 与 params:选择正确的参数传递方式
FastAPI(5)- 查询参数 Query Parameters
FastAPI(5)- 查询参数 Query Parameters
267 0
FastAPI(5)- 查询参数 Query Parameters
|
自然语言处理
Lucene QueryParser的一个"解析异常"
假期重新梳理了下之前在新浪博客的历史文档(新浪博客已下线),将一些内容重新搬到这里。 本文Lucene QueryParser的一个解析异常分析。
108 0
|
自然语言处理
查询问题---queryparse深入理解
查询问题,最直接的反馈就是页面出来的结果。然后牵扯到的问题就一步一步深入了。第一层:queryparse,其中关联分词,关联booleanquery orphrasequery,关联boost。。。。第二层:排序了,关联排序的策略、排序的得分公式第三层:各种转换、过滤、筛选后的页面结果这里重点将q.
1804 1