`
womendu
  • 浏览: 1520432 次
  • 性别: Icon_minigender_2
  • 来自: 北京
文章分类
社区版块
存档分类
最新评论

lucene 搜索入门实例

阅读更多
  1. Y_indexer.java建索引
  2. packagecom.hapark.lucene;
  3. importjava.io.BufferedReader;
  4. importjava.io.File;
  5. importjava.io.FileInputStream;
  6. importjava.io.IOException;
  7. importjava.io.InputStreamReader;
  8. importjava.util.ArrayList;
  9. importjava.util.Date;
  10. importorg.apache.lucene.analysis.Analyzer;
  11. importorg.apache.lucene.analysis.standard.StandardAnalyzer;
  12. importorg.apache.lucene.document.Document;
  13. importorg.apache.lucene.document.Field;
  14. importorg.apache.lucene.index.IndexWriter;
  15. publicclassY_indexer{
  16. publicstaticvoidmain(String[]args)throwsException{
  17. /*指明要索引文件夹的位置,这里是D盘的y文件夹下*/
  18. FilefileDir=newFile("d:\\y");
  19. /*这里放索引文件的位置*/
  20. FileindexDir=newFile("d:\\index");
  21. AnalyzerluceneAnalyzer=newStandardAnalyzer();
  22. IndexWriterindexWriter=newIndexWriter(indexDir,luceneAnalyzer,
  23. true);
  24. ArrayListlist=newArrayList();
  25. getList(fileDir,list);
  26. File[]textFiles=(File[])list.toArray(newFile[0]);
  27. System.out.println(textFiles.length);
  28. longstartTime=newDate().getTime();
  29. //增加document到索引去
  30. for(inti=0;i<textFiles.length;i++){
  31. if(textFiles[i].isFile()
  32. &&textFiles[i].getName().endsWith(".html")){
  33. System.out.println("File"+textFiles[i].getCanonicalPath()
  34. +"正在被索引....");
  35. Stringtemp=FileReaderAll(textFiles[i].getCanonicalPath(),
  36. "GBK");
  37. System.out.println(temp);
  38. Documentdocument=newDocument();
  39. FieldFieldPath=newField("path",textFiles[i].getPath(),
  40. Field.Store.YES,Field.Index.NO);
  41. FieldFieldBody=newField("body",temp,Field.Store.YES,
  42. Field.Index.TOKENIZED,
  43. Field.TermVector.WITH_POSITIONS_OFFSETS);
  44. FieldFieldTitle=newField("title",temp,Field.Store.YES,
  45. Field.Index.TOKENIZED,
  46. Field.TermVector.WITH_POSITIONS_OFFSETS);
  47. document.add(FieldPath);
  48. document.add(FieldBody);
  49. document.add(FieldTitle);
  50. indexWriter.addDocument(document);
  51. }
  52. }
  53. //optimize()方法是对索引进行优化
  54. indexWriter.optimize();
  55. indexWriter.close();
  56. //测试一下索引的时间
  57. longendTime=newDate().getTime();
  58. System.out
  59. .println("这花费了"
  60. +(endTime-startTime)
  61. +"毫秒来把文档增加到索引里面去!"
  62. +fileDir.getPath());
  63. }
  64. /**
  65. *多层文件夹
  66. *@paramfile
  67. *@paramlist
  68. */
  69. publicstaticvoidgetList(Filefile,ArrayListlist){
  70. if(file.isDirectory()&&file.getName().indexOf(".")!=0){
  71. File[]file2=file.listFiles();
  72. for(inti=0;i<file2.length;i++)
  73. getList(file2[i],list);
  74. }else{
  75. list.add(file);
  76. }
  77. }
  78. publicstaticStringFileReaderAll(StringFileName,Stringcharset)
  79. throwsIOException{
  80. BufferedReaderreader=newBufferedReader(newInputStreamReader(
  81. newFileInputStream(FileName),charset));
  82. Stringline=newString();
  83. Stringtemp=newString();
  84. while((line=reader.readLine())!=null){
  85. temp+=line;
  86. }
  87. reader.close();
  88. returntemp;
  89. }
  90. }

  1. Y_searcherlucene搜索
  2. packagecom.hapark.lucene;
  3. importjava.io.IOException;
  4. importjava.util.ArrayList;
  5. importjava.util.Date;
  6. importjava.util.List;
  7. importorg.apache.lucene.analysis.Analyzer;
  8. importorg.apache.lucene.analysis.standard.StandardAnalyzer;
  9. importorg.apache.lucene.queryParser.ParseException;
  10. importorg.apache.lucene.queryParser.QueryParser;
  11. importorg.apache.lucene.search.Hits;
  12. importorg.apache.lucene.search.IndexSearcher;
  13. importorg.apache.lucene.search.Query;
  14. publicclassY_searcher{
  15. publicListsearch(){
  16. ListsearchResult=newArrayList();//创建一个List接口的一个实例类ArrayList类
  17. try{
  18. Hitshits=null;
  19. Stringkey="苏";
  20. Queryquery=null;
  21. IndexSearchersearcher=newIndexSearcher("d:\\yuyang");
  22. Analyzeranalyzer=newStandardAnalyzer();//创建一个Analyzer接口的一个实例类StandardAnalyzer
  23. QueryParserqp=newQueryParser("title",analyzer);
  24. query=qp.parse(key);
  25. if(searcher!=null){
  26. Datestart=newDate();
  27. hits=searcher.search(query);//遍历hist结果的length
  28. if(hits.length()==0){
  29. System.out.println("对不起。没你想要的结果!");
  30. }
  31. else{
  32. for(inti=0;i<hits.length();i++){
  33. Dateend=newDate();
  34. //System.out.println("找到:"+hits.length()+"Totalresult!");
  35. System.out.println("文件的路径:"+hits.doc(i).get("path"));
  36. //System.out.println("内容:"+hits.doc(i).get("body"));
  37. System.out.println(hits.doc(i).get("title"));
  38. System.out.println("检索完成,用时"+(end.getTime()-start.getTime())+"毫秒");
  39. }
  40. }
  41. }
  42. }
  43. catch(ParseExceptionex){
  44. }
  45. catch(IOExceptione){
  46. }
  47. returnsearchResult;
  48. }
  49. publicstaticvoidmain(Stringargs[]){
  50. Y_searchery_s=newY_searcher();
  51. y_s.search();
  52. }
  53. }

分享到:
评论

相关推荐

    lucene 3.0 入门实例

    doc.add(new Field("title", "Lucene入门", Field.Store.YES, Field.Index.ANALYZED)); doc.add(new Field("content", "这是Lucene 3.0的实例", Field.Store.YES, Field.Index.ANALYZED)); ``` 3. **查询...

    lucene3.6入门实例教程

    《Lucene 3.6 入门实例教程》是一份专...总之,《Lucene 3.6 入门实例教程》是学习Lucene的理想资源,它将理论知识与实践操作紧密结合,使开发者能够快速掌握全文检索技术,为构建高效、精准的搜索应用打下坚实的基础。

    Lucene 简单入门程序实例

    标题与描述:“Lucene简单入门程序实例”这一标题与描述明确指出文章将引导读者通过一个实际的示例来了解和掌握Lucene的基本操作。Lucene是一个高性能、全功能的文本搜索引擎库,它允许用户对文档进行索引和搜索。本...

    Lucene3.0入门实例含jar包

    **Lucene 3.0 入门实例及关键知识点** ...总之,Lucene 3.0 入门实例提供了理解全文搜索引擎工作原理的基础,通过实践,开发者能够熟练掌握如何在自己的应用程序中集成和利用 Lucene 实现高效、精准的文本搜索功能。

    Lucene 的入门 实例 代码

    【Lucene 入门教程】 Lucene 是一个由Apache软件基金会开发的开源全文检索引擎工具包,它并非一个完整的搜索引擎,而是提供了一个强大的架构,允许开发人员轻松地在他们的应用程序中集成全文检索功能。Lucene 支持...

    Apache Lucene3.0 入门实例介绍

    这个入门实例将引导我们了解如何使用Lucene 3.0版本进行基本的索引和搜索操作。以下是对Lucene 3.0关键知识点的详细讲解: 1. **Lucene的架构**: Lucene的核心组件包括文档(Document)、字段(Field)、索引...

    Lucene索引搜索简介以及入门实例源码.rar

    这个压缩包中的源码很可能是演示了如何构建和使用Lucene索引进行搜索的简单实例,对于初学者来说是一份很好的学习资料。通过阅读源码,你可以了解如何实际操作Lucene,从而加深对Lucene的理解。同时,实践是最好的...

    最新全文检索 lucene-5.2.1 入门经典实例

    《最新全文检索 Lucene-5.2.1 入门经典实例》 Lucene是一个开源的全文检索库,由Apache软件基金会开发,广泛应用于各种信息检索系统。在5.2.1版本中,Lucene提供了更为高效和强大的搜索功能,为开发者提供了构建...

    lucene 入门

    `lucene入门小实例.txt` 文件中可能包含了一个简单的Lucene使用示例,例如: 1. 创建 `Directory` 对象,比如使用 `FSDirectory.open()` 打开一个文件系统的目录来存储索引。 2. 实例化 `Analyzer`,如使用 `...

    lucene实例(包括分页、中文检索等)

    lucene实例是一个比较详细的例子,包括lucene的入门到高级实例,代码里有比较详细的实例,所有的实例都是通过junit来测试的。实例包括各种搜索:如通配符查询、模糊查询、查询结果的分页、中文分词器、自定义分词器...

    第一个lucene的简单实例....

    标题 "第一个lucene的简单实例" 提到的是关于Apache Lucene的初步应用,这是一个全文搜索引擎库,常用于Java开发中。Lucene提供了高效的文本搜索功能,使得开发者能够快速地在大量数据中查找相关信息。 描述中的 ...

    lucene3.0全文检索入门实例

    **Lucene 3.0 全文检索入门实例** Lucene 是一个开源的全文检索库,由 Apache 软件基金会开发。它提供了一个高级、灵活的搜索功能框架,允许开发者在自己的应用中轻松地集成全文检索功能。本文将重点介绍如何使用 ...

    Java搜索工具——Lucene实例总结(一)

    Java搜索工具——Lucene实例总结(一) 在Java开发中,搜索引擎已经成为不可或缺的一部分,而Apache Lucene正是一个强大的全文搜索引擎库。这篇博文将带你深入理解Lucene的基本概念和使用方式,帮助你快速入门并掌握...

    lucene入门实例

    **Lucene 入门实例详解** Lucene 是一个开源全文搜索引擎库,由 Apache 软件基金会维护。它提供了一个可扩展的、高性能的搜索框架,使得开发者能够快速地在大量文本数据中实现全文检索功能。这个入门实例将帮助我们...

    Lucene学习笔记(一)Lucene入门实例

    NULL 博文链接:https://kylinsoong.iteye.com/blog/719415

    第一个Lucene 3.6 (3.X) 入门实例

    【标题】:“第一个Lucene 3.6 (3.X) 入门实例” ...总之,Lucene 3.6入门实例涉及从设置开发环境、创建索引到实现搜索功能的全过程。理解这些基本步骤和核心概念,是掌握Lucene并进一步构建高效检索系统的基石。

    搜索篇:Struts、Lucene的Web实例

    2. **Lucene入门**:解释Lucene的核心概念,如Document、Field、Analyzer和IndexWriter,以及如何建立和管理索引。 3. **Struts与Lucene整合**:演示如何在Struts的Action类中调用Lucene进行搜索,以及如何在JSP页面...

    lucene3.6的入门案例

    在这个入门案例中,我们将深入理解如何使用 Lucene 3.6 版本来构建基本的文本搜索引擎。 首先,我们需要了解 Lucene 的核心概念: 1. **索引(Indexing)**:Lucene 的工作始于创建索引,将文档内容转化为可搜索的...

    全文检索 lucene-5.2.1 入门Eclipse工程实例

    Eclipse工程文件,全文检索 lucene-5.2.1 入门Eclipse工程实例,福利放送,与lucene3结果比对

Global site tag (gtag.js) - Google Analytics