lucene学习笔记2-查询索引
来源:互联网 发布:javascript动态特效 编辑:程序博客网 时间:2024/06/10 10:05
import java.io.File;import java.io.FileReader;import org.apache.lucene.analysis.standard.StandardAnalyzer;import org.apache.lucene.document.Document;import org.apache.lucene.document.Field;import org.apache.lucene.index.IndexReader;import org.apache.lucene.index.IndexWriter;import org.apache.lucene.index.IndexWriterConfig;import org.apache.lucene.queryParser.QueryParser;import org.apache.lucene.search.IndexSearcher;import org.apache.lucene.search.Query;import org.apache.lucene.search.ScoreDoc;import org.apache.lucene.search.TopDocs;import org.apache.lucene.store.Directory;import org.apache.lucene.store.FSDirectory;import org.apache.lucene.util.Version;public class HelloLucene{ /** * 创建index方法 */ public void index() { // IndexWriter使用完毕必须close IndexWriter writer = null; try { // 1、创建directory // 在内存中 Directory directory // = new RAMDirectory(); // 硬盘中创建索引 Directory directory = FSDirectory.open(new File("D:\\workspace\\helloLucene\\helloIndex\\")); // 2、创建IndexWriter // 通过该对象写索引,设置版本号,和创建一个标准的分词器。 IndexWriterConfig iwc = new IndexWriterConfig(Version.LUCENE_35, new StandardAnalyzer(Version.LUCENE_35)); writer = new IndexWriter(directory, iwc); // 3、创建document对象,索引文档或数据库表,文档(路径、大小、文件名等等)或数据表中的每一个属性都是field Document doc = null; // 4、遍历要索引的文件,并为document添加field File f = new File("D:\\workspace\\helloLucene\\doc"); for (File file : f.listFiles()) { doc = new Document(); // 添加文件内容 doc.add(new Field("content", new FileReader(file))); // 添加文件名称,Field.Store.YES把文件全名存储到索引中,Field.Index.NOT_ANALYZED是否进行分词(文件名不需要分词) doc.add(new Field("filename", file.getName(), Field.Store.YES, Field.Index.NOT_ANALYZED)); // 添加文件路径,Field.Store.YES把文件全名存储到硬盘,Field.Index.NOT_ANALYZED是否进行分词(文件名不需要分词) doc.add(new Field("path", file.getAbsolutePath(), Field.Store.YES, Field.Index.NOT_ANALYZED)); // 5、通过indexWriter添加文档到索引中。 writer.addDocument(doc); } } catch (Exception e) { e.printStackTrace(); } finally { try { if (writer != null) { writer.close(); } } catch (Exception e) { e.printStackTrace(); } } } /** * 搜索 */ public void searcher() { try { // 1、创建directory,在什么地方搜索 Directory directory = FSDirectory.open(new File("D:\\workspace\\helloLucene\\helloIndex\\")); // 2、创建IndexReader IndexReader reader = IndexReader.open(directory); // 3、根据IndexReader创建IndexSearcher IndexSearcher searcher = new IndexSearcher(reader); // 4、创建搜索的Parser来确定搜索文件的内容,通过该对象查索引,设置版本号,搜索的域(字段),和创建一个标准的分词器 QueryParser parser = new QueryParser(Version.LUCENE_35, "content", new StandardAnalyzer(Version.LUCENE_35)); // 创建query,表示搜索域为content中包含java的文档 Query query = parser.parse("java"); // 5、根据searcher搜索并返回TopDocs,返回10条 TopDocs tds = searcher.search(query, 10); // 6、根据TopDocs获取ScoreDoc属性数组 ScoreDoc[] sds = tds.scoreDocs; for (ScoreDoc sd : sds) { // 7、根据searcher和ScordDoc对象获取具体的document对象 Document d = searcher.doc(sd.doc); // 8、根据document对象获取需要的值 System.out.println(d.get("filename") + " " + d.get("path")); } reader.close(); } catch (Exception e) { e.printStackTrace(); } } public static void main(String[] args) { HelloLucene hl = new HelloLucene(); // hl.index(); hl.searcher(); System.out.println("end.."); }}
输出:
RUNNING.txt D:\workspace\helloLucene\doc\RUNNING.txt
end..
- lucene学习笔记2-查询索引
- Lucene学习笔记(2)::Lucene的索引文件格式
- Lucene学习-创建索引、关键词查询
- Lucene学习笔记(3)-索引操作
- lucene学习笔记之构建索引
- lucene学习笔记1--索引创建
- lucene学习笔记1-创建索引
- 深入 Lucene 索引机制-学习笔记1
- Lucene学习笔记(二)--------构建索引
- Lucene学习笔记(1):Lucene的索引文件格式
- lucene学习笔记(二)lucene建立索引
- lucene 索引创建查询
- lucene 查询索引
- Lucene查询索引
- Lucene查询索引
- lucene(索引的查询)
- Lucene 查询索引库
- Lucene查询索引
- 通过UIView寻找UIViewController(Find UIViewController by UIView)
- relocation error: /home/eclipse/configuration/org.eclipse.osgi /bundles/193/2/.cp /libswt-pi-gtk-423
- .net安装程序打包详细过程
- 【练习01】 简单题(1)1005
- game--博弈
- lucene学习笔记2-查询索引
- HDU 1232 畅通工程 (并查集)
- 点播、单播、多播、广播学习笔记
- 使用javac编译时报找不到符号
- linux shell 正则表达式(BREs,EREs,PREs)差异比较
- const 关键字 实现重载
- 【转载】种子搜索神器使用图文教程
- APPCAN开发中涉及到的跨域解决方案
- linux下vi命令大全