lunece查询
//初始化IndexSearcher
IndexSearcher search = new IndexSearcher(path);
//构建Term
Term term = new Term(fieldName,value);
//构建Query对象
Query q = new TermQuery(term);
//检索
Hits hits = search.search(q);
//显示查询结果
for(int i=0; i<hits.length(); i++)
{
System.out.println(hits.doc(i));
}
IndexSearcher的常用方法有
search(Query q);
search(Query q,Filter filter);
search(Query q,Sort sort);
search(Query q,Filter filter,Sort sort);
Hits的常用方法有
doc(i); //得到第i个Document
id(i); //得到第i个Document在lucene文件中的id号
length(); //结果集的数量
score(i); //第i个Doucment的文档得分,默认显示方式为score值越高,排得越前。score取值0-1之间
如果想提高score的值。可以有建立索引时设置,用Field.setBoost(Float f)方法
Field f = new Field(fieldname,value,store,tokenized);
f.setBoost(5f);
在lucene中,document ID 越小,查询时所需时间越短,因为Hits的内部缓存机制。
Lunece的常用搜索
一、TermQuery 词条搜索
Query query = new TermQuery(new Term(fieldname,value));
二、BooleanQuery 布尔搜索
建立二个TermQuery
Query q1 = new TermQuery(new Term(fieldname1,value1));
Query q2 = new TermQuery(new Term(fieldname2,value2));
建立BooleanQuery对象
BooleanQuery query = new BooleanQuery();
query.add(q1,BooleanClause.Occue.MUST);
query.add(q2,BooleanClause.Occue.MUST);
BooleanClause.Occue 有三个静态值
MUST,MUST_NOT,SHOULD
must&&must = (AnB)
must&&must_not = (A-(AnB))
should&&should = (AuB)
三、RangeQuery 范围搜索
RangeQuery query = new RangeQuery(begin,end,false);
begin = new Term(fieldname,value);
end = new Term(fieldname,value);
false 表示开区间 不包括 (begin,end) true 表示闭区间 包括 [begin,end]
四、PrefixQuery 前缀搜索
PrefixQuery query = new PrefixQuery(new Term(fieldname,value));
五、PhraseQuery 短语搜索
PhraseQuery query = new PhraseQuery();
query.add(new Term(fieldname,value));
query.add(new Term(fieldname,value));
还可以设置坡度,query.setSlop(int n),默认为0如查询“钢铁”,可以用
query.add(new Term(fieldname,”钢”));
query.add(new Term(fieldname,”铁”));
如想把“钢和铁”,“钢与铁”也查询出来。可以加上query.setSlop(1);
六、MultiPhraseQuery 多短语搜索
MultiPhraseQuery query = new MultiPharseQuery();
//加入短语的前缀
query.add(new Term(fieldname,value));
//加入短语的后缀
query.add(new Term[] {new Term(fieldname,value), new Term(fieldname,value)});
七、FuzzyQuery 模糊搜索
FuzzyQuery query = new FuzzyQuery(new Term(filed,value));
它的三个构造函数
FuzzyQuery(Term t);
FuzzyQuery(Term t,float 0.5f); 相似度。0-1之间
FuzzyQuery(Term t,float 0.5f,int prefixLength);前缀必须相同的长度
分享到:
相关推荐
lunece 建立索引与查询示例lunece 建立索引与查询示例lunece 建立索引与查询示例lunece 建立索引与查询示例lunece 建立索引与查询示例lunece 建立索引与查询示例
学习lunece的一个小例子,实现一些基本的搜索功能~
lunece
lunece 的.net应用实例.
lunece全文检索
NULL 博文链接:https://huhongyu.iteye.com/blog/1929626
资源lunece 学习笔记实用知识库分享知识分享
最新版linux lucene-8.5.1.tgz
对sqlserver数据库表,用多线程,高速创建索引。性能很高。参数灵活
这个压缩包包lucene所需的jar包-----------------------
一个简单Lucene全文检索案例 A simple Lucene text retrieval case
google搜索时时显示数据,利用ajax和lunece技术实现。lunece获取查询数据,然后用ajax操作鼠标和键盘达到效果。
作为一个开放源代码项目,Lucene从问世之后,引发了开放源代码社群的巨大反响,程序员们不仅使用它构建具体的全文检索应用,而且将之集成到各种系统软件中去,以及构建Web应用,甚至某些商业软件也采用了Lucene作为...
NLuke 一个可以查看lunece索引文件的工具哦
Lucene+in+action中文完整版-含目录,学习lunece必备
Solr 是Apache下的一个顶级开源项目,采用Java开发,它是基于Lucene的全文搜索服务器。Solr可以独立运行在Jetty、Tomcat等这些Servlet容器中。
自主研发的中文分词技术,速度超过3MB/s,准确率达到90%以上,大大超过网上各种开源中文分词技术,几乎可以和中科院的ICTCLAS相媲美,结合当前最成熟的Lunece的.net版本,实现了功能强大执行快速的全文检索引擎...
SpringBoot +Shiro+Mybatis +Thymeleaf +Layui+mysql+Lunece 图片使用的七牛云,属性设置在类cn.coderzhx.utils.VariableName里 如果不想用七牛云那么修改为为tomcat的upload目录 如果仅仅是本地运行项目的话,七牛云...
5.自主研发的中文分词技术,速度超过3MB/s,准确率达到90%以上,大大超过网上各种开源中文分词技术,几乎可以和中科院的ICTCLAS相媲美,结合当前最成熟的Lunece的.net版本,实现了功能强大执行快速的全文检索引擎。...
5.自主研发的中文分词技术,速度超过3MB/s,准确率达到90%以上,大大超过网上各种开源中文分词技术,几乎可以和中科院的ICTCLAS相媲美,结合当前最成熟的Lunece的.net版本,实现了功能强大执行快速的全文检索引擎。...