*:Lucene能够为文本类型的数据建立索引,所以,只要你把要索引的数据格式转换成文本,Lucene就能对你的数据建立索引,把创建好的索引文件保存到硬盘或内存中,最后根据用户的查询条件在索引文件上查询
------建立索引------
*:Directory:文件系统索引文件所在目录
eg: File indexFile = new File("your index dir");
Directory directory = FSDirectory.open(indexFile.toPath());
*:IndexWriter:创建和添加索引。构造器参数含有:索引放置目录Directory(FSDirector:文件系统目录/RAMDirectory:内存中的位置),索引建立配置信息IndexWriterConfig,首先判断该索引目录是否处于锁定状态,如果是先解锁
eg: IndexWriter indexWriter = null;
indexWriter = new IndexWriter(directory,indexWriterConfig);
*:Document:文档对象。要被索引的文本文件或者数据库行记录要被封装成的对象,这个对象由多个属性(字段)对象-Field对象组成
eg: Document doc1 = new Document():
doc1.add(new StringField("id","abcde",Store.YES));
indexWriter.addDocument(doc1);
//其他doc的添加
indexWriter.commit();
indexWriter.close();
*:Field:描述文档(或行记录,总之就是Document对象)对象的某个属性,比如一行数据库记录有多个属性,一封邮件由标题和内容两个Field对象组成,放到Document对象中的Field并不是该Document的全部属性,只放要用来建立索引的字段
*:Analyzer:分词器。在对文档建立索引之前,需要对文档内容进行分词处理,针对不同的语言和应用有不同的分词器,Analyzer把分词后的内容交给IndexWriter来建立索引,构造器传入Lucene的版本,表示使用Lucene的标准分词技术
eg: Analyzer analyzer = new StandardAnalyzer();
*IndexWriterConfig:建立索引的配置信息类。
eg: IndexWriterConfig indexWriterConfig = new IndexWriterConfig(analyzer);
indexWriterConfig.setOpenMode(OpenMode.CREATE_OR_APPEND);
------检索索引------
*:IndexSearcher:索引检索。用来在建立好索引上进行检索,它以只读的方式打开一个索引,然后在该索引上进行检索。构造器参数为DirectoryReader的一个实现类
eg: IndexSearcher searcher = new IndexSearcher(dRader);
*: DirectoryReader:打开索引以进行检索.
eg: DirectoryReader dReader = DirectoryReader.open(directory);
*:Query:检索查询语句
eg: query = new TermQuery(new Term("fieldName",key));
eg: query = PrefixQuery/PhraseQuery/WildcardQuery(?/*)/TermRangeQuery/BooleanQuery
*:TopDocs:结果集。
eg: TopDocs topDocs = searcher.search(query,10);
if(topDocs != null){
int resNum = topDocs.totalHits;
for(int i=0;i<topDocs.scoreDocs.length;i++){
Document doc = searcher.doc(topDocs.scoreDocs[i].doc);
// do something
}
}
//关闭相关资源
directory.close();
dReader.close();
------建立索引------
*:Directory:文件系统索引文件所在目录
eg: File indexFile = new File("your index dir");
Directory directory = FSDirectory.open(indexFile.toPath());
*:IndexWriter:创建和添加索引。构造器参数含有:索引放置目录Directory(FSDirector:文件系统目录/RAMDirectory:内存中的位置),索引建立配置信息IndexWriterConfig,首先判断该索引目录是否处于锁定状态,如果是先解锁
eg: IndexWriter indexWriter = null;
indexWriter = new IndexWriter(directory,indexWriterConfig);
*:Document:文档对象。要被索引的文本文件或者数据库行记录要被封装成的对象,这个对象由多个属性(字段)对象-Field对象组成
eg: Document doc1 = new Document():
doc1.add(new StringField("id","abcde",Store.YES));
indexWriter.addDocument(doc1);
//其他doc的添加
indexWriter.commit();
indexWriter.close();
*:Field:描述文档(或行记录,总之就是Document对象)对象的某个属性,比如一行数据库记录有多个属性,一封邮件由标题和内容两个Field对象组成,放到Document对象中的Field并不是该Document的全部属性,只放要用来建立索引的字段
*:Analyzer:分词器。在对文档建立索引之前,需要对文档内容进行分词处理,针对不同的语言和应用有不同的分词器,Analyzer把分词后的内容交给IndexWriter来建立索引,构造器传入Lucene的版本,表示使用Lucene的标准分词技术
eg: Analyzer analyzer = new StandardAnalyzer();
*IndexWriterConfig:建立索引的配置信息类。
eg: IndexWriterConfig indexWriterConfig = new IndexWriterConfig(analyzer);
indexWriterConfig.setOpenMode(OpenMode.CREATE_OR_APPEND);
------检索索引------
*:IndexSearcher:索引检索。用来在建立好索引上进行检索,它以只读的方式打开一个索引,然后在该索引上进行检索。构造器参数为DirectoryReader的一个实现类
eg: IndexSearcher searcher = new IndexSearcher(dRader);
*: DirectoryReader:打开索引以进行检索.
eg: DirectoryReader dReader = DirectoryReader.open(directory);
*:Query:检索查询语句
eg: query = new TermQuery(new Term("fieldName",key));
eg: query = PrefixQuery/PhraseQuery/WildcardQuery(?/*)/TermRangeQuery/BooleanQuery
*:TopDocs:结果集。
eg: TopDocs topDocs = searcher.search(query,10);
if(topDocs != null){
int resNum = topDocs.totalHits;
for(int i=0;i<topDocs.scoreDocs.length;i++){
Document doc = searcher.doc(topDocs.scoreDocs[i].doc);
// do something
}
}
//关闭相关资源
directory.close();
dReader.close();