说说几个常用的类。
OpenMode 是一个枚举类,有三个元素,分别表示 IndexWriter 的打开模式。
CREATE: 每次打开 IndexWriter 时清空当前索引目录下的索引,再新建索引。
APPEND: 打开 IndexWriter 时在当前索引目录下进行追加索引。
CREATE_OR_APPEND: 打开 IndexWriter 时如果当前索引目录下没有索引,那么新建索引,否则进行追加索引。
IndexWriterConfig 默认的 openMode 是 OpenMode.CREATE_OR_APPEND。
我使用的这个版本自带的有中文分词器,名为 SmartChineseAnalyzer,聪明的中文分词器,它不在核心包,可以在 smartcn 这个包内找到,其实并不那么聪明,它的默认停词只有标点符号,效果并不好,使用时推荐自己去加载停词库,这里有个,分享给大家。
- Analyzer analyzer = new SmartChineseAnalyzer(WordlistLoader.getWordSet(IOUtils.getDecodingReader(Searcher.class, "stopword.txt", StandardCharsets.UTF_8), "//"));
- //stopword.txt中就是我的停词
Field 是添加到索引文档中的数据,称为域 (相当于关系型数据库表中的字段)。
Field 有很多的扩展子类,如 IntField,StringField 等,它们大部分默认都是可索引的,如果这个域不需要被索引,那么我们可以去操作 FieldType 解决。
IndexWriter 拥有索引的增删改功能。
所谓改并不像关系型数据库中那样,lucene 是删了后在新赠。
最好不要想着使用索引文档的 id 去删和改一个文档,因为 lucene 对这个支持的不多 (可能是我刚入门,至少 api 上相关的方法寥寥无几),最好是在建立索引时自己去维护一个 id 域,通过 term 或者查询这个 id 来精确的去删除或改。
来源: http://www.bubuko.com/infodetail-1960850.html