Hi:Lucene!
Posted 蔚蓝记录表
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Hi:Lucene!相关的知识,希望对你有一定的参考价值。
什么是Lucene?
lucene是一个全文检索引擎工具包,提供了完整的查询引擎和索引引擎,将数据以document的形式存储在本地。
Lucene工作分为两部分
1,创建索引
源字符串经过分析器,将源中需要的信息加入到Document的各个Field,把需要索引的Field索引起来,把需要存储的Field存储起来,将索引写入存储器,存储器可以是内存或磁盘
代码:
IndexWriter writer = new IndexWriter(“/data/index/”, new StandardAnalyzer(), true);
Document doc = new Document();
doc.add(new Field("id", "item.id.toString", Field.Store.YES, Field.Index.TOKENIZED));
doc.add(new Field("content", "lucene works well", Field.Store.YES, Field.Index.TOKENIZED));
writer.addDocument(doc);
writer.optimize();
writer.close();
①Field:索引文件中一个个的字段块,占用空间按长度分配
②Store:一个内部类,是static的主要设置Field的存储属性,主要有
public static fianl Store COMPRESS=new Store(“COMMPRESS”)//在索引中压缩存储Field的值
public static fianl Store YES=new Store(“YES”)//在索引中存储Field的值
public static fianl Store NO=new Store(“NO”)//在索引中不存储Field的值
③Index:通过Index设置索引方式,主要有
//对Field进行索引,同时还要对其进行分词(由Analyzer来管理如何分词)
public static final Index TOKENIZED=new Index(“TOKENIZED”)
//对Filed进行索引,但不对其进行分词
public static final Index UN_TOKENIZED=new Index(“UN_TOKENIZED”)
//对Field进行索引,但是不适用Analyzer
public static final Index NO_NORMS=new Index(“NO_NORMS”)
④优化索引,关闭写入
2,开始搜索
Lucene有很多辅助查询类,如:
TermQuery:相当于sql的包含于
WildcardQuery:可以使用通配符*进行查询
PrefixQuery:以某关键字的开头进行查询
FuzzyQuery:以Levenshtein算法进行查询
RangeQuery:以日期间隔进行查询
构建Query对象,构建IndexSearcher使用其进行检索
以上实现引入Lucene的jar包,具体实现参考API
以上是关于Hi:Lucene!的主要内容,如果未能解决你的问题,请参考以下文章
如何在 Hibernate Search/Lucene 中禁用默认评分/提升?
搜索引擎系列二:Lucene(Lucene介绍Lucene架构Lucene集成)