lucene BooleanClause setMinimumNumberShouldMatch 在solr中的对应使用方法

我们在使用BoooleanQuery的时候,有的时候想要命中其中的至少N项,就会用到setMinimumNumberShouldMatch方法。

比如:

BooleanQuery bq = new BooleanQuery();
bq.add(new TermQuery(new Term("title","java")), BooleanClause.Occur.SHOULD);
bq.add(new TermQuery(new Term("title","C#")), BooleanClause.Occur.SHOULD);
bq.add(new TermQuery(new Term("title","javascript")), BooleanClause.Occur.SHOULD);
bq.add(new TermQuery(new Term("title","php")), BooleanClause.Occur.SHOULD);
bq.setMinimumNumberShouldMatch(3);query字符串为 : (title:java title:C# title:javascript title:php)~3

当我们把该字符串直接当做solr的q参数去检索的时候,solr会提示我们语法错误。而,我们有的时候又必须使用该项功能,比如说我要招一个java、C#、js、php至少会三项的人(仅仅是个例子),这个时候就需要使用到

solr的edismax 

检索的时候,我们选择defType = edismax  mm =3 ,mm表示至少需要满足的 BooleanClause 的个数

时间: 2024-11-26 05:34:29

lucene BooleanClause setMinimumNumberShouldMatch 在solr中的对应使用方法的相关文章

在Lucene或Solr中实现高亮的策略

一:功能背景 最近要做个高亮的搜索需求,以前也搞过,所以没啥难度,只不过原来用的是Lucene,现在要换成Solr而已,在Lucene4.x的时候,散仙在以前的文章中也分析过如何在搜索的时候实现高亮,主要有三种方式,具体内容,请参考散仙以前的2篇文章: 第一:在Lucene4.3中实现高亮的方式  http://qindongliang.iteye.com/blog/1953409 第二:在Solr4.3中服务端高亮的方式  http://qindongliang.iteye.com/blog/

(solr系列:四)将mysql数据库中的数据导入到solr中

在前面的博文中,已完成了在tomcat中对solr的部署,为solr添加了一个自定义的core,并且引入了ik分词器. 那么该如何将本地的mysql的数据导入到solr中呢? 准备工作: 1.mysql数据源:myuser库中的user表(8条数据) /* Navicat MySQL Data Transfer Source Server         : localhost Source Server Version : 50521 Source Host           : local

如何在solr中添加ik分词器

分词技术是搜索技术里面的一块基石.很多人用过,如果你只是为了简单快速地搭一个搜索引擎,你确实不用了解太深.但一旦涉及效果问题,分词器上就可以做很多文章.例如, 在我们实际用作电商领域的搜索的工作中,类目预判的实现就极须依赖分词,至少需要做到可以对分词器动态加规则.再一个简单的例子,如果你的优化方法就是对不同的词分权重,提高一些重点词的权重的话,你就需要依赖并理解分词器. 下面将介绍如何在solr中为core:simple的title添加分词,承接上一篇博文(http://simplelife.b

在Solr中配置和使用ansj分词

在上一节[编译Ansj之Solr插件]中介绍如何编译ansj分词在solr(lucene)环境中使用的接口,本章将介绍如何在solr中使用ansj,其步骤主要包括:下载或者编译ansj和nlp-lang等jar包.在schema中配置相关类型.将ansj和nlp-lang等jar包配置到solr中.测试ansj分词效果. 一.下载或者编译ansj-seg和nlp-lang等jar包.  1.您可以到 http://maven.ansj.org/org/ansj/ansj_seg/  | http

在Solr中配置中文分词IKAnalyzer

李克华 云计算高级群: 292870151 交流:Hadoop.NoSQL.分布式.lucene.solr.nutch 在Solr中配置中文分词IKAnalyzer 1.在配置文件schema.xml(位置{SOLR_HOME}/config/下),配置信息如下: <!-- IKAnalyzer 中文分词-->     <fieldType name="text_ik" class="solr.TextField">         <

solr中Cache综述

一.概述 Solr查询的核心类就是SolrIndexSearcher,每个core通常在同一时刻只由当前的SolrIndexSearcher供上层的handler使用(当切换SolrIndexSearcher时可能会有两个同时提供服务),而Solr的各种Cache是依附于SolrIndexSearcher的,SolrIndexSearcher存在则Cache生,SolrIndexSearcher亡则Cache被清空close掉.Solr在Lucene之上开发了很多Cache功能,从目前提供的Ca

指尖上的电商---(9).net开发Solr中的Facet功能

上一节中我们演示了在SolrAdmin中使用Facet功能来进行分组统计,这一节我们看看怎样使用.NET开发Solr中的Facet功能.在讲Facet功能的同时, 我们看下.Net中怎样使用Solr查询.使用的客户端工具是easysorl.net,大家可以去codeplex下载.这个工具很好用. 看如下图,下图就是我们要演示的功能   1.模糊查询 模糊查询就是搜索指定的汉字得到一个结果.下面的示例就是查询商品名称中包含白色的所有商品,最终得到的结果如下图 代码 public void Quer

solr入门之多线程操作solr中索引字段的解决

涉及的问题: 建索引时有一个字段是该词语出现的次数,这个字段是放在solr里的 而我用的是多线程来进行全量导入的,这里就涉及到了多线程问题 多个线程操作同一个变量时如何处理? 我是这样子做的 : 首先将变量本地话--分布式就放到大容器中,我这里仅仅使用了一个map来存 词和次数的关系映射 变量本地化后就是多线程的解决了--锁的设置-我仅仅是在操作时加了一个锁来解决这个问题 这样做后总体上应该能解决变量的问题了 最后还有一个线程顺序问题要解决下 当 最后一个提交索引时 获取的索引不一定是正确的索引

指尖上的电商---(8)Solr中Facet的用法

在大型电子商务网站中,在商品列表页,我们都可以看到商品按分类,品牌,价格的分类显示,如下图,这些我们可以使用solr中的facet功能实现. facet的基本功能就是对搜索结果中的商品进行分类. 1.facet用法 facet.field:指定要分类的字段 facet=on 或 facet=true表示功能开启 facet.prefix 表示字段前缀 facet.limit 表示返回的记录数 facet.offict 表示从第几条开始,主要用于分页 指尖上的电商---(8)Solr中Facet的