1 Lucen目录介绍
2 lucene-core-3.6.2.jar是lucene开发核心jar包
contrib 目录存放,包含一些扩展jar包
3 案例
建立第一个Lucene项目:lucene3_day1
(1)需要先将数据转换成为Document对象,每一个数据信息转换成为Field(String name, String value, Field.Store store, Field.Indexindex)
(2)指定索引库位置Directorydirectory = FSDirectory.open(new File("index"));// 当前Index目录
(3)分词器Analyzeranalyzer = new StandardAnalyzer(Version.LUCENE_36);
(4)写入索引:
|
案例编写:
案例目录: |
Article.java |
|
|
运行单元测试后的结果: 运行后index目录下的结果: |
4 可以通过luke工具查看索引库中内容(它是一个jar包)
下载网址:http://code.google.com/p/luke/
打开方式:
如果用这种方式打不可以,可以用命令的方式打开文件,进入这个目录,选中Shift+鼠标右键—>此处打开命令窗口—>输入命令:java -jar lukeall-3.5.0.jar
工具的截图如下:
点击OK后的结果:
通过overview可以查看到索引信息,通过Document可以查看文档对象信息
5 查找
和上面的并集的query代码如下: |
@Test publicvoid searchIndex() throws Exception { //建立Query对象--根据标题 String queryString = "Lucene"; //第一个参数,版本号 //第二个参数,字段 //第三个参数,分词器 Analyzernew StandardAnalyzer(Version.LUCENE_36); QueryParser queryParser = new QueryParser(Version.LUCENE_36,"title",analyzer); Query query = queryParser.parse(queryString);
//根据Query查找 // 索引目录位置 Directory directory = FSDirectory.open(new File("index")); IndexSearcher indexSearcher = new IndexSearcher(IndexReader.open(directory)); //查询满足结果的前100条数据 TopDocs topDocs = indexSearcher.search(query, 100); System.out.println("满足结果记录条数:" + topDocs.totalHits);
//获取结果 ScoreDoc[] scoreDocs = topDocs.scoreDocs; for (int i = 0; i < scoreDocs.length; i++) { //先获得Document下标 int docID = scoreDocs[i].doc; Document document = indexSearcher.doc(docID); System.out.println("id:" + document.get("id")); System.out.println("title:" + document.get("title")); System.out.println("content:" + document.get("content")); }
indexSearcher.close(); } |
运行结果: |
- Luke查看的索引库内容:
索引库中信息,包括两大部分:
A 索引词条信息
B 文档对象信息
- 每个Field中都存在一个Store和一个Index
- 索引内容和Document内容有什么关系
查找时,通过索引内容 查找 文档对象信息
- 索引的查找过程