lucene 相关小结
前不久工作中重新使用了一下lucene,比以前更加清晰点了,记点小结,以备后用。
1 Document 类:
此类是索引文档的最小单元,它可以理解成一个Hashmap,可以有各种各样的属性(Field),任何你要索引的内容都需要转成这个Document才能加入到索引中。
2 Analyzer 类:
分词器,建索引时,将文章中的text分成一个一个的term,然后term做反向索引。搜索时,将搜索的词分成一个一个的term,然后到索引中查找,目前lucene中自带的smartcn分词器用来中文分词也还不错。
3 几个疑问:
Q: lucene的IndexWriter 和 IndexReader是线程安全的吗?
A:答案是线程安全,IndexReader和IndexWriter的关系大概就是读写锁的关系。
Q:可以对一个目录同时进行索引和搜索的过程吗?
A:当然是了,这里我之前的疑问是:如果我建索引的过程中,删了某些Document,搜索是不是马上就搜不出结果了?答案是这种情况不会出现,搜索还是可以搜出来的,需要IndexWriter.close()且对IndexReader进行reopen才能起效。reopen的使用可以参考apache的文档。
Q:是否可以按某个条件搜索索引,然后删除这部分Document?
A:可以,参考官方文档,而且还有updateDocument可用。