lucene常用类

来源: http://zlei.iteye.com/blog/224527

[b]Directory[/b]
Directory这个类代表了 Lucene 的索引的存储的位置,这是一个抽象类,
它目前有两个实现,第一个是 FSDirectory,它表示一个存储在文件系统中的索引的位置。
第二个是 RAMDirectory,它表示一个存储在内存当中的索引的位置。

[b]Document[/b]
Document文档类似数据库中的一条记录,可以由好几个字段(Field)组成,并且字段可以套用不同的类型
Document 是用来描述文档的,这里的文档可以指一个 HTML 页面,一封电子邮件,或者是一个文本文件。
一个 Document 对象由多个 Field 对象组成的。
可以把一个 Document 对象想象成数据库中的一个记录,而每个 Field 对象就是记录的一个字段。

[b]IndexWriter[/b]
IndexWriter 是 Lucene 用来创建索引的一个核心的类,
他的作用是把一个个的 Document 对象加到索引中来。
例如:IndexWriter writer = new IndexWriter(directory, new StandardAnalyzer(), false);
第一个参数是要索引建立在哪个目录里
第二个参数是新建一个文本分析器,这里用的是标准的大家也可以自己写一个
第三个参数如果是true,在建立索引之前先将目录清空。
[b]Analyzer[/b]
在一个文档被索引之前,首先需要对文档内容进行分词处理,
这部分工作就是由 Analyzer 来做的。Analyzer 类是一个抽象类,它有多个实现。
针对不同的语言和应用需要选择适合的 Analyzer。
Analyzer 把分词后的内容交给 IndexWriter 来建立索引

[b]IndexSearcher[/b]
IndexSearcher是用来在建立好的索引上进行搜索的。
它只能以只读的方式打开一个索引,所以可以有多个IndexSearcher的实例在一个索引上进行操作。

[b]Term[/b]是搜索的基本单位,一个Term对象有两个String类型的域组成。
生成一个Term对象可以有如下一条语句来完成:
Term term = new Term(“fieldName”,”queryWord”);
其中第一个参数代表了要在文档的哪一个Field上进行查找,第二个参数代表了要查询的关键词。
Term term = new Term(fieldNames[i], keyWord);
FuzzyQuery用来搜索相似的term
FuzzyQuery fQuery = new FuzzyQuery(term);


[b]Query[/b]这是一个抽象类,他有多个实现,
比如TermQuery, BooleanQuery, PrefixQuery.
这个类的目的是把用户输入的查询字符串封装成Lucene能够识别的Query。

如果想输入关键字而不想关心是在哪个Field里的就可以用MultiFieldQueryParser了。
Query keyQuery = MultiFieldQueryParser.parse(keyWord, fieldNames,
conditions, new StandardAnalyzer());

BooleanClause.Occur[]的三种类型:
MUST : + and
MUST_NOT : - not
SHOULD : or

Hits是用来保存搜索的结果的
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值