博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Lucene使用总结
阅读量:5786 次
发布时间:2019-06-18

本文共 2288 字,大约阅读时间需要 7 分钟。

1、引入Lucene相关的jar, 本实验采用的是如下版本,现在最新的版本为3.0

lucene-core-2.4.0.jar、lucene-analyzers-2.4.0.jar、lucene-highlighter-2.4.0.jar、je-analysis-1.5.3.jar

下载地址:, Maven库:

2、Lucene3.0分为网页抓取、分词器、高亮器、索引库等20几个模块, 具体参考~\lucene-3.0.0\contrib\*

 

 
  1. import org.apache.lucene.analysis.Analyzer; 
  2. import org.apache.lucene.analysis.standard.StandardAnalyzer; 
  3. import org.apache.lucene.document.Document; 
  4. import org.apache.lucene.index.IndexWriter; 
  5. import org.apache.lucene.index.IndexWriter.MaxFieldLength; 
  6. import org.apache.lucene.queryParser.MultiFieldQueryParser; 
  7. import org.apache.lucene.queryParser.QueryParser; 
  8. import org.apache.lucene.search.Filter; 
  9. import org.apache.lucene.search.IndexSearcher; 
  10. import org.apache.lucene.search.Query; 
  11. import org.apache.lucene.search.ScoreDoc; 
  12. import org.apache.lucene.search.TopDocs; 
  13. import org.junit.Test; 
  14.  
  15. import cn.itcast.lucene.utils.File2DocumentUtils; 
  16.  
  17. public class HelloWorld { 
  18.     String filePath = "E:\\workspace\\LuceneDemo\\luceneDatasource\\IndexWriter addDocument's a javadoc.txt"
  19.  
  20.     String indexPath = "E:\\workspace\\LuceneDemo\\luceneIndex"
  21.  
  22.     Analyzer analyzer = new StandardAnalyzer(); 
  23.  
  24.     /** 
  25.      * 创建索引 
  26.      *  
  27.      * IndexWriter 是用来操作(增、删、改)索引库的 
  28.      */ 
  29.     @Test 
  30.     public void createIndex() throws Exception { 
  31.         // file --> doc 
  32.         Document doc = File2DocumentUtils.file2Document(filePath); 
  33.  
  34.         // 建立索引 
  35.         IndexWriter indexWriter = new IndexWriter(indexPath, analyzer, true
  36.                 MaxFieldLength.LIMITED); 
  37.         indexWriter.addDocument(doc); 
  38.         indexWriter.close(); 
  39.     } 
  40.  
  41.     /** 
  42.      * 搜索 
  43.      *  
  44.      * IndexSearcher 是用来在索引库中进行查询的 
  45.      */ 
  46.     @Test 
  47.     public void search() throws Exception { 
  48.         // String queryString = "document"; 
  49.         String queryString = "adddocument"
  50.  
  51.         // 1,把要搜索的文本解析为 Query 
  52.         String[] fields = { "name""content" }; 
  53.         QueryParser queryParser = new MultiFieldQueryParser(fields, analyzer); 
  54.         Query query = queryParser.parse(queryString); 
  55.  
  56.         // 2,进行查询 
  57.         IndexSearcher indexSearcher = new IndexSearcher(indexPath); 
  58.         Filter filter = null
  59.         TopDocs topDocs = indexSearcher.search(query, filter, 10000); 
  60.         System.out.println("总共有【" + topDocs.totalHits + "】条匹配结果"); 
  61.  
  62.         // 3,打印结果 
  63.         for (ScoreDoc scoreDoc : topDocs.scoreDocs) { 
  64.             int docSn = scoreDoc.doc; // 文档内部编号 
  65.             Document doc = indexSearcher.doc(docSn); // 根据编号取出相应的文档 
  66.             File2DocumentUtils.printDocumentInfo(doc); // 打印出文档信息 
  67.         } 
  68.     } 

3、更多实例待续......

本文转自 tianya23 51CTO博客,原文链接:http://blog.51cto.com/tianya23/396733,如需转载请自行联系原作者

你可能感兴趣的文章
vim使用教程
查看>>
JDK在LINUX系统平台下的部署案例与总结
查看>>
跨vlan通信-----单臂路由技术
查看>>
百度编辑器ueditor 光标位置的坐标
查看>>
DEV-C++ 调试方法简明图文教程(转)
查看>>
VS2017+EF+Mysql生成实体数据模型(解决闪退的坑)
查看>>
C++多态、继承的简单分析
查看>>
库克称未来苹果用户可自己决定是否降频 网友:你是在搞笑吗?
查看>>
6倍性能差100TB容量,阿里云POLARDB咋实现?
查看>>
linux 安装 MySQLdb for python
查看>>
Sublime Text 2 技巧
查看>>
使用fscanf()函数从磁盘文件读取格式化数据
查看>>
网站一些error_log报错
查看>>
参加婚礼
查看>>
h5 audio相关手册
查看>>
JDK文章列表-转载列表
查看>>
umask--设置用户文件和目录的文件创建缺省屏蔽值
查看>>
磁盘管理-quota
查看>>
刚毕业从事java开发需要掌握的技术
查看>>
CSS Custom Properties 自定义属性
查看>>