一个lucene创建索引和查找索引的样例:

创建索引:

public class Indexer {
private IndexWriter indexWriter;
/**
* 构造器实例化indexWriter
* @throws Exception
*/
public Indexer(String indexPath) throws Exception {
Directory directory = FSDirectory.open(Paths.get(indexPath));//索引存储的位置
Analyzer analyzer = new StandardAnalyzer();//标准分析器
IndexWriterConfig iwc = new IndexWriterConfig(analyzer);
indexWriter = new IndexWriter(directory, iwc);
}
/**
* 关闭indexWriter
* @param indexWriter
* @throws IOException
*/
public void close() throws Exception {
indexWriter.close();
}
/**
* 获取文档Document
* @throws FileNotFoundException
*/
public Document getDocumnet(File f) throws Exception {
Document doc = new Document();
doc.add(new TextField("content", new FileReader(f)));
doc.add(new TextField("tittle",f.getName(),Field.Store.YES));
doc.add(new TextField("path",f.getCanonicalPath(), Field.Store.YES));
return doc;
}
/**
* 索引当个文件
* @throws Exception
*/
public void indexFile(File f) throws Exception {
System.out.println(f.getName());
Document doc = this.getDocumnet(f);
indexWriter.addDocument(doc);
}
/**
* 索引一个目录下的所有文件
* @param filePath 目录路径
* @return 索引文件的个数
* @throws Exception
*/
public int index(String filePath) throws Exception {
File[] files = new File(filePath).listFiles();
for(File f:files) {
this.indexFile(f);
}
return indexWriter.numDocs();
}
public static void main(String[] args) {
String indexPath = "G:\\工作\\luence\\index";
String dataPath = "G:\\工作\\luence\\data";
Indexer indexer = null;
int indexNum=0;
try {
indexer = new Indexer(indexPath);
indexNum = indexer.index(dataPath);
} catch (Exception e) {
e.printStackTrace();
}finally {
try {
indexer.close();
} catch (Exception e) {
e.printStackTrace();
}
}
System.out.println("索引了"+indexNum+"个文件");
}
}

查找索引:

public class Searcher {
public static void search(String indexPath,String searchStr) throws Exception { Directory dir = FSDirectory.open(Paths.get(indexPath));
IndexReader indeReader = DirectoryReader.open(dir);
IndexSearcher indexSearch = new IndexSearcher(indeReader); Analyzer analyzer = new StandardAnalyzer();//标准分词器
QueryParser parser = new QueryParser("content", analyzer);
Query query = parser.parse(searchStr);
TopDocs td = indexSearch.search(query, 10);
for(ScoreDoc sc:td.scoreDocs) {
Document doc = indexSearch.doc(sc.doc);
System.out.println(doc.get("tittle"));
System.out.println(doc.get("path"));
}
}
public static void main(String[] args) throws Exception {
Searcher.search("G:\\工作\\luence\\index\\", "Hollywood");
}
}

最新文章

  1. 【挖财工作笔记】idea使用指南
  2. js判断本地是否安装app
  3. 一次Debug过程的思考
  4. 数据库类II
  5. 黄聪:PHP json_encode中文乱码解决方法
  6. Determining Equality of Objects
  7. Arrays.fill方法的陷阱
  8. java基础知识再学习--集合框架-对象的强、软、弱和虚引用
  9. JSP/Servlet-----charset 、pageEncoding差别
  10. thinkphp5.0入口文件
  11. 【Spark2.0源码学习】-5.Worker启动
  12. D - MUH and Cube Walls
  13. 动态库 Framework
  14. JDK无法卸载问题解决
  15. 子数组的最大异或和---Trie
  16. C#编译错误 CS0009:未能打开元数据文件
  17. Kotlin入门(1)搭建Kotlin开发环境
  18. Linux系统知识汇总
  19. charles代理以及关于其抓取https信息的操作
  20. axios post、get 请求参数和headers配置

热门文章

  1. Java后端精选技术:SpringBoot配置读取
  2. 【TCP/IP】TCP详解笔记
  3. MQTT 协议是个啥?这篇文章告诉你!
  4. Echarts中X轴坐标太密集,分段显示
  5. hdu1233 最小生成树Prim算法和Kruskal算法
  6. javascript之一切都是对象
  7. 98、配置ftp服务器(vsftpd)
  8. POJ 2663 Tri Tiling dp 画图找规律
  9. centos 8.3系统调优参数配置
  10. CentOS-Docker搭建远程监控服务器指标