前两篇介绍了如何使用luence创建与检索索引,可能还有很多不了解相应API的功能的,我就简单的解析一下相关用到的API或者说是常用的API以便查阅,其实后面我们用到Solr的时候,这个也只是让你了解好API以便在Solr上不至于那么空洞。
创建索引
创建索引库API:
1、 IndexWriter(负责索引库的CUD)
IndexWriter indexWriter = new IndexWriter("索引库存储目录", "写索引需要的配置信息");
addDocument()添加文档
updateDocument(Term term, Document doc)修改文档
deleteDocuments(Term term)删除文档
deleteAll()删除全部文档
commit()提交
close()关闭
2、Document文档
add()添加字段
get()获取字段值
3、Directory存储目录
FSDirectory文件系统存储目录(一般open)
1、 open()静态的方法
2、 NIOFSDirectory
3、
SimpleFSDirectory
RAMDirectory内存存储目录(不建议,容易吃内存,造成内存溢出)
4、Analyzer分词器
5、IndexWriterConfig写索引配置信息
IndexWriterConfig indexWriterConfig = new IndexWriterConfig("当前Lucene的版本号", "分词器");
indexWriterConfig.setOpenMode(): 设置索引库打开的模式.
-- OpenMode.APPEND: 追加的模式.(不会创建索引库,只追加文档)
-- OpenMode.CREATE: 创建的模式.(每次都会重新创建索引库)
-- OpenMode.CREATE_OR_APPEND: 创建或追加的模式.6、IndexableField字段接口
IndexableField : 字段.
Field的子类: Field field = new Field("字段名", "字段值", "是否存储");
-- StringField : 主键列用它存储(它会建索引,但不会分词,它会把整个内容建成一个索引)
-- TextField: 字符串
new TextField("字段名", "字段值", "是否存储");
new TextField("字段名", Reader); : 内容不会存储.
-- IntField
-- FloatField
-- DoubleField
-- LongField
-- StoredField : (不建索)只存储.
FieldType ft = new FieldType();
ft.setTokenized(true); // 需要分词
ft.setIndexed(true); // 需要建索引
ft.setStored(false); // 需要存储
Field field = new Field("字段名", "字段值", ft);7、FieldType字段类型
setTokenized()是否分词
setIndexed()是否建索引
setStored()是否存储
————Store.YES(存储)
————Store.NO(不存储)
检索
1、IndexSearcher检索对象
IndexSearcher indexSearcher = new IndexSearcher(indexReader);
| search()检索 |
| doc()获取文档 |
2、IndexReader读索引对象
通过它的子类DirectoryReader.open("索引库存储目录")方法:
IndexReader indexReader = DirectoryReader.open(FSDirectory.open(new File("")));
本文介绍如何使用Lucene进行索引的创建与文档检索。涵盖了IndexWriter、Document、Directory等核心API的使用方法,并解释了不同类型的字段及其配置选项。
1184

被折叠的 条评论
为什么被折叠?



