4、测试
public class TestIndexWriterRAMDirectory {
private IndexWriter writer=null;
private Directory directory=null;
private IndexReader reader = null;
private IndexSearcher searcher=null;
private IndexWriterDemo demo =new IndexWriterDemo();
@Before
public void setUp() throws Exception {
directory = new RAMDirectory();
IndexWriterConfig config = new IndexWriterConfig(Version.LUCENE_36,new SimpleAnalyzer(Version.LUCENE_36));
writer = new IndexWriter(directory,config);
}
@Test
public void testAddDoc()throws Exception {
/**生成索引库*/
demo.buildDocs(writer);
/**查询数据*/
reader = IndexReader.open(directory);
searcher =new IndexSearcher(reader);
demo.searcherDocs(searcher);
}
}
测试结果
buildDocs()->总人数为 :6 buildDocs()->存入索引库的数量:6 searcherDoc()->男生人数:4 人员信息:ID:1,姓名:张三1,性别:man 人员信息:ID:2,姓名:张三2,性别:man 人员信息:ID:4,姓名:张三4,性别:man 人员信息:ID:5,姓名:张三5,性别:man
OK,代码完毕
实例的Lucene版本为:lucene-3.6.1
在这再次说下Lucene检索的整个流程(请参考demo的代码)
1、建立索引的执行过程
在建立索引时,先要把文档存到索引库中,还要更新词汇表。
操作步骤如下:
(1)、把数据对象转换成相应的Document,其中的属性转为Field;
(2)、调用工具IndexWriter的addDocument(doc),把Document添加到索引库中;
(3)、Lucene做的操作:
把文档存到索引库中,并自动指定一个内部编号,用来唯一标识这个条数据;内部编号类似与这条数据的地址,在索引库内部的数据进行调整后,这个编号就可能会改变,同时词汇表中的引用的编号也会做相应的改变,以保 证正确。
更新词汇表。把文本中的词找出来放到词汇表中,简历与文档的对应关系。要把那些词放到词汇表中呢?这就用到一个叫Analyzer(分词器)的工具。他的作用是把一段文本中的词按照规则取出所包含的所有词。对应的是Analyzer类,这是一个抽象类,切分词的具体规则是由其子类实现。

在把对象的属性转化为 Field时,相关代码为:
doc.add(new Field(“title”,article.getTitle(), Store.YES, Index.Analyzed))
其中第三个参数的意思为
本文来自电脑杂谈,转载请注明本文网址:
http://www.pc-fly.com/a/jisuanjixue/article-21386-3.html
我的烊烊
这是赤裸裸的挑衅