1. ackage com.zxf.demo;
  2.  
  3. import java.io.BufferedReader;
  4. import java.io.File;
  5. import java.io.FileInputStream;
  6. import java.io.InputStreamReader;
  7.  
  8. import org.apache.lucene.analysis.Analyzer;
  9. import org.apache.lucene.analysis.standard.StandardAnalyzer;
  10. import org.apache.lucene.document.Document;
  11. import org.apache.lucene.document.Field;
  12. import org.apache.lucene.document.StringField;
  13. import org.apache.lucene.document.TextField;
  14. import org.apache.lucene.index.DirectoryReader;
  15. import org.apache.lucene.index.IndexReader;
  16. import org.apache.lucene.index.IndexWriter;
  17. import org.apache.lucene.index.IndexWriterConfig;
  18. import org.apache.lucene.queryparser.classic.QueryParser;
  19. import org.apache.lucene.search.IndexSearcher;
  20. import org.apache.lucene.search.Query;
  21. import org.apache.lucene.search.ScoreDoc;
  22. import org.apache.lucene.search.TopDocs;
  23. import org.apache.lucene.store.Directory;
  24. import org.apache.lucene.store.FSDirectory;
  25. import org.apache.lucene.util.Version;
  26.  
  27. public class LuceneForuDemo {
  28. static final String INDEXPATH = System.getProperty("user.dir") + "\\index";
  29. static final String DATAPATH = System.getProperty("user.dir") + "\\data";
  30.  
  31. public static void main(String[] args) {
  32. try{
  33. LuceneForuDemo.indexDirectory();
  34. LuceneForuDemo.search();
  35. }catch (Exception e) {
  36. e.printStackTrace();
  37. }
  38. }
  39.  
  40. /**
  41. * 建立索引
  42. * @throws Exception
  43. */
  44. public static void indexDirectory() throws Exception{
  45. File indexDir = new File(LuceneForuDemo.INDEXPATH);
  46. File dataDir = new File(LuceneForuDemo.DATAPATH);
  47.  
  48. Analyzer analyzer = new StandardAnalyzer(Version.LUCENE_44);
  49. IndexWriterConfig iwc = new IndexWriterConfig(Version.LUCENE_44, analyzer);
  50. Directory dir = FSDirectory.open(indexDir);
  51. IndexWriter indexWriter = new IndexWriter(dir, iwc);
  52.  
  53. File[] dataFiles = dataDir.listFiles();
  54. for (File file : dataFiles) {
  55. FileInputStream inStream = new FileInputStream(file);
  56. Document doc = new Document();
  57. Field fullFileName = new StringField("fullFileName", file.getCanonicalPath(),Field.Store.YES);
  58. doc.add(fullFileName);
  59. doc.add(new TextField("contents", new BufferedReader(
  60. new InputStreamReader(inStream, "UTF-8")
  61. )
  62. )
  63. );
  64. indexWriter.addDocument(doc);
  65. }
  66. indexWriter.close();
  67. }
  68.  
  69. /*搜索*/
  70. public static void search() throws Exception{
  71. String field = "contents";
  72. String queryStr = "test"; //搜索的字符串
  73. File indexDir = new File(LuceneForuDemo.INDEXPATH);
  74. IndexReader reader = DirectoryReader.open(FSDirectory.open(indexDir));
  75. IndexSearcher searcher = new IndexSearcher(reader);
  76. Analyzer analyzer = new StandardAnalyzer(Version.LUCENE_44);
  77. QueryParser parser = new QueryParser(Version.LUCENE_44, field, analyzer);
  78. Query query = parser.parse(queryStr);
  79. System.out.println("Searching for: " + query.toString(field));
  80. TopDocs results = searcher.search(query, 50);
  81. ScoreDoc[] hits = results.scoreDocs;
  82. int numTotalHits = results.totalHits;
  83. System.out.println(numTotalHits + " total matching in documents");
  84. for(ScoreDoc sd:hits){
  85. Document doc = searcher.doc(sd.doc);
  86. System.out.println(doc.get("fullFileName"));
  87. }
  88.  
  89. }
  90. }

lucene 4.4 demo的更多相关文章

  1. 基于Lucene的文件检索Demo

    通过Lucene实现了简单的文件检索功能的Demo.这个Demo支持基于文件内容的检索,支持中文分词和高亮显示. 下面简单的介绍下核心的类 1)索引相关的类 1.FileIndexBuilder -- ...

  2. Lucene搜索引擎例子demo

    一.导入相应的jar包 KAnalyzer3.2.0Stable.jar lucene-analyzers-3.0.1.jar lucene-core-3.0.1.jar lucene-highlig ...

  3. 一个Lucene.Net的Demo

    今天突然想来看一下全文检索,于是就了解了一下Lucene.Net,然后把公司目前的产品表拿来练手,写了这么个Demo. 先看一下Demo的代码 public class ProductReposito ...

  4. lucene简单搜索demo

    方法类 package com.wxf.Test; import com.wxf.pojo.Goods; import org.apache.lucene.analysis.standard.Stan ...

  5. lucene简单使用demo

    测试结构目录: 1.索引库.分词器 Configuration.java package com.test.www.web.lucene; import java.io.File; import or ...

  6. Lucene站内搜索的设计思路

    正好近期部门有一个小需求需要做商品的搜索,虽然最终由于工作量等原因先做数据库搜索,我依然用刚接触的Lucene弄了一套自嗨. 首先看需求:搜索:根据商品标题和内容搜索 没错,就这么简单! 我想了想,数 ...

  7. Lucene.Net 入门级实例 浅显易懂。。。

    Lucene.Net 阅读目录 开始 Lucene简介 效果图 Demo文件说明 简单使用 重点类的说明 存在问题 调整后 Lucene.Net博文与资源下载 做过站内搜索的朋友应该对Lucene.N ...

  8. 【转】lucene4.3.0 配置与调试

    lucene4.3.0 配置与调试 demo lucene的最新版本是4.3.0, http://www.apache.org/dyn/closer.cgi/lucene/java/4.3.0 luc ...

  9. lucene 索引 demo

    核心util /** * Alipay.com Inc. * Copyright (c) 2004-2015 All Rights Reserved/ */ package com.lucene.de ...

随机推荐

  1. VS2008压力测试时web测试记录器无显示

    系统:win7 浏览器:IE8 web测试记录器:Web Test Recorder   在运行vs2008Web压力测试时一直在浏览器左侧的web测试记录器无显示. 解决办法:     在IE工具栏 ...

  2. js定义函数的几种结构形式

    1.函数声明 function name(参数) { 执行的代码 } 2.函数表达式 也称匿名函数 var x = function (参数) { 执行的代码 }; //第二种方式按照完整的语法需要在 ...

  3. Strom的安装及使用

    在使用storm之前,首先看zookeeper是否安装好 单机版 1.在node1上修改配置文件conf下的storm.yaml文件

  4. [转载]DOS循环:bat/批处理for命令详解 (史上虽详尽的总结和说明~~)

    --本文来源于TTT BLOG: http://www.yoyotao.net/ttt/, 原文地址:http://www.yoyotao.net/ttt/post/139.html 前言: 虽然以前 ...

  5. Java笔记(十三)……面向对象III继承(inheritance)

    继承概述 继承概述 多个类中存在相同属性和行为时,将这些内容抽取到单独一个类中,那么多个类无需再定义这些属性和行为,只要继那个类即可. 多个类可以称为子类,单独这个类称为父类或者超类. 子类可以直接访 ...

  6. Ubuntu13.04配置完全指南(转)

    Ubuntu13.04配置完全指南(一)软件源 教育网推荐使用USTC软件源. 首先备份现有软件源: $ sudo cp /etc/apt/sources.list /etc/apt/sources. ...

  7. 最新Blog

    应该会长期稳定的 https://b.intmainreturn0.com/

  8. devexpress中gridcontrol 一些样式改变

    改变footer为扁平化效果 整个footer背景色CustomDrawFootere.Appearance.BackColor = Color.Transparent; e.Appearance.D ...

  9. makeKeyAndVisible的功能

    makeKeyAndVisible的作用 [self.window makeKeyAndVisible] 由于iPhone是单窗口程序,所以也就只有这么一个Window对象,而且是UIWindow,不 ...

  10. Win+R指令(1)

    CMD命令:开始->运行->键入cmd或command(在命令行里可以看到系统版本.文件系统版本)1. appwiz.cpl:程序和功能 2. calc:启动计算器 3. certmgr. ...