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集成)

Lucene入门精讲视频教程

Lucene底层原理和优化经验分享-Lucene简介和索引原理

Lucene 实战(第2版)

Lucene学习总结