solr中的普通search和phrase search

下面的描述,都是在eDisMax模式下进行讨论的。

1. 普通搜索

solr的默认设置中,关键词之间是or关系。

<solrQueryParser defaultOperator="OR"/>

例如搜索"cpu memory",其实是按照cpu和memory分别去doc的各fields中匹配,然后将cpu和memory匹配的分数相加,得到整个查询的score。 这里有一点是与预期不同的,如果某一个关键词没有任何匹配,那么整个的score也是0, 而不是简单忽略掉这个没有匹配的关键词。例如cpu没有任何匹配,那么搜索"cpu memory"返回的结果也是空,而不是返回匹配"memory"的结果。

出现这一点的原因是DisMax的参数mm,默认值是100%,即要求所有关键词都要有匹配,否则将doc从结果集中去掉。

参考文档: http://wiki.apache.org/solr/DisMaxQParserPlugin#mm_.28Minimum_.27Should.27_Match.29

2. 带or的搜索

如果搜索"cpu or memory",score的计算方式和普通搜索一样,但是返回的结果集是"cpu"和"memory"的合集。

3. phrase search

单纯的phrase search,可使用引号将关键词引起来,solr会认为phrase,完全按照关键词进行查询。

4. 混合phrase和普通搜索

可使用or把普通搜索和phrase连接起来。例如

cpu memory or "cpu memory"^30

其中"^30"是为了phrase匹配的结果优先级更高。

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

转载于:https://www.cnblogs.com/sleepingfire/archive/2011/09/21/2183070.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值