|
核心包名
|
功能说明
|
|
org.apache.lucene.analysis
|
语言分析器;主要用于分词
|
|
org.apache.lucene.document
|
索引存储的文档管理,类似关系数据系统中的表
|
|
org.apache.lucene.index
|
索引管理:增加、修改、删除索引等
|
|
org.apache.lucene.queryParser
|
查询分析器:实现查询关键词的运算
|
|
org.apache.lucene.search
|
检索管理:根据查询条件,检索到结果
|
|
org.apache.lucene.store
|
数据存储管理:主要包括底层的一些I/O操作
|
|
org.apache.lucene.util
|
包括一些公共的使用类
|
|
|
数据库
|
Lucene
|
|
概
念
|
列/字段
|
Field
|
|
行/记录
|
Document
|
|
|
查询(SELECT)
|
Searcher
|
|
|
操
作
|
添加(INSERT)
|
IndexWriter. addDocument
|
|
删除(DELETE)
|
IndexReader.delete
|
|
|
修改(UPDATE)
|
不支持(可删除后重新添加)
|
package com.fxr.demo2;
import java.io.IOException;
import org.apache.lucene.analysis.Analyzer;
import org.apache.lucene.analysis.standard.StandardAnalyzer;
import org.apache.lucene.document.Document;
import org.apache.lucene.document.Field;
import org.apache.lucene.index.IndexWriter;
import org.apache.lucene.store.Directory;
import org.apache.lucene.store.FSDirectory;
public class TestIndex {
public static void main(String[] args) throws IOException {
String [] ids = {"1","2","3"};
String [] names = {"zhangsan","lisi","wangwu"};
String [] addresses = {"zhengzhou","shanghai","beijing"};
Analyzer analyzer = new StandardAnalyzer();//标准的分词器
String indexDir = "f:/lucenefxrindex";
Directory dir=FSDirectory.getDirectory(indexDir);//索引存放的位置
//TRUE 表示创建或者覆盖当前的索引;FALSE表示对当前的索引进行追加
//default 的值是128
IndexWriter indexWriter = new IndexWriter(dir,analyzer,true,IndexWriter.MaxFieldLength.LIMITED);
for(int i=0;i<ids.length;i++){
Document document = new Document();
document.add(new Field("id",ids[i],Field.Store.YES,Field.Index.ANALYZED));
document.add(new Field("name",names[i],Field.Store.YES,Field.Index.ANALYZED));
document.add(new Field("address",addresses[i],Field.Store.YES,Field.Index.ANALYZED));
indexWriter.addDocument(document);
}
indexWriter.optimize();
indexWriter.close();
}
}
package com.fxr.demo2;
import java.io.IOException;
import org.apache.lucene.index.IndexReader;
import org.apache.lucene.index.Term;
import org.apache.lucene.store.Directory;
import org.apache.lucene.store.FSDirectory;
public class TestDelete {
public static void main(String[] args) throws IOException {
String indexDir = "f:/lucenefxrindex";
Directory dir=FSDirectory.getDirectory(indexDir);
IndexReader reader=IndexReader.open(dir);
System.out.println(reader.maxDoc());
//reader.deleteDocument(0);
System.out.println(reader.maxDoc());
System.out.println(reader.deleteDocuments(new Term("id","2")));
System.out.println(reader.numDocs());
reader.close();
dir.close();
}
}
原文:http://www.cnblogs.com/aicpcode/p/4299887.html