`

lucene 创建 搜索 更新 删除

阅读更多
package fold1.lucene;

import java.io.File;
import java.io.FileReader;
import java.io.IOException;
import java.util.Date;

import org.apache.lucene.analysis.Analyzer;
import org.apache.lucene.analysis.standard.StandardAnalyzer;
import org.apache.lucene.document.DateTools;
import org.apache.lucene.document.Document;
import org.apache.lucene.document.Field;
import org.apache.lucene.index.CorruptIndexException;
import org.apache.lucene.index.IndexWriter;
import org.apache.lucene.index.Term;
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.TermQuery;
import org.apache.lucene.search.TopDocs;
import org.apache.lucene.store.Directory;
import org.apache.lucene.store.SimpleFSDirectory;
import org.apache.lucene.util.Version;

public class Test {

 /**
  * @param args
  * @throws Exception 
  */
    //要索引的文件目录
 String fileDir="D:\\pro\\excise\\WebRoot\\lucetest";
 //将索引文件保存的文件目录
 String indexDir="D:\\index";
 public static void main(String[] args) throws Throwable {
  // TODO Auto-generated method stub
        Test text=new Test();
        text.createSearch();
        text.search();
 }
    public void createSearch() throws Exception{
     //创建directory
      Directory dir =new SimpleFSDirectory(new File(indexDir));
        //创建分词器
      Analyzer analyzer=new StandardAnalyzer(Version.LUCENE_30);
        //创建IndexWriter对象,第一个参数是Directory,第二个是分词器,第三个表示是否是创建,true创建新的索引,FALSE为追加索引,第四表示表示分词的最大值,比如说new MaxFieldLength(2),就表示两个字一分,一般用IndexWriter.MaxFieldLength.LIMITED
      IndexWriter indexwrite=new IndexWriter(dir, analyzer, true, IndexWriter.MaxFieldLength.UNLIMITED);
        
      File[] files=new File(fileDir).listFiles();
      for(int i=0;i<files.length;i++){
       //创建Document对象
       Document doc=new Document();
       //创建filed对象  field 就行当予百度搜索出来的一条记录的中一个结构,标题 或者内容或者最后修改时间,而一个document就相当于一条记录
       Field field2=new Field("fileName" ,files[i].getName(),Field.Store.YES,Field.Index.NOT_ANALYZED);
       Field field1=new Field("content",new FileReader(files[i]));       
       Field field3=new Field("fileDate",DateTools.dateToString(new Date(), DateTools.Resolution.DAY),Field.Store.YES,Field.Index.ANALYZED);
       doc.add(field1);doc.add(field2);doc.add(field3);
       indexwrite.addDocument(doc);     
      }
      System.out.println("共建立:"+indexwrite.numDocs()+"条索引");
  //对于批量索引进行优化
   //indexwrite.optimize();
      indexwrite.close();
    }
    
    public void search() throws Throwable{
     //创建directory
      Directory dir =new SimpleFSDirectory(new File(indexDir));
      //创建indexSearcher 
      //创建 IndexSearcher对象,相比IndexWriter对象,这个参数就要提供一个索引的目录就行了   
         IndexSearcher indexSearch = new IndexSearcher(dir); 
      //创建queryParse
         QueryParser queryparse=new QueryParser(Version.LUCENE_30, "content",new StandardAnalyzer(Version.LUCENE_30));
       //创建query对象 
         Query query =queryparse.parse("content:这是");
                    //下面边那种方式也可以用 不过局限于单个词,另外有类似于SQL的 Lucene 查询语句 可以在网上查询
        //Query q = new TermQuery(new Term("contents", "java"));   
       //返回符合条件的10条记录
       TopDocs hits=indexSearch.search(query, 10);
       System.out.println("一共搜到"+hits.totalHits);
       //搜索结果 TopDocs里面有scoreDocs[]数组,里面保存着索引值    
       //循环hits.scoreDocs数据,并使用indexSearch.doc方法把Document还原,再拿出对应的字段的值   
           for (int i = 0; i < hits.scoreDocs.length; i++) {   
          ScoreDoc sdoc = hits.scoreDocs[i];   
           Document doc = indexSearch.doc(sdoc.doc);   
          System.out.println(doc.get("fileName"));   
          System.out.println(doc.get("content"));
         System.out.println(doc.get("fileDate"));
        }          
          indexSearch.close(); 
    }
}

 

以上代码是仿照别人的博客写的 ,以下是删除、更新   我没有写把原博客的给搬一下http://langhua9527.iteye.com/blog/582347

 

分享到:
评论

相关推荐

    lucene创建修改删除组合条件查询

    以上就是关于“lucene创建修改删除组合条件查询”的主要知识点。通过熟练掌握这些操作,开发者可以构建出强大的全文搜索系统,满足各种复杂的查询需求。在实际应用中,还需要注意性能优化,如合理使用索引,以及根据...

    Lucene Demo(创建、增加、更新、删除索引等)

    Lucene 是一个强大的全文搜索引擎库,通过创建、增加、更新和删除索引来管理文本数据的检索。理解并熟练运用这些操作是构建高效搜索应用的关键。通过 `LuceneTest` 示例代码,开发者可以深入理解这些概念并应用于...

    Lucene-创建,删除,搜索,排序

    Lucene-创建,删除,搜索,排序

    Lucene 实时搜索视频详解

    1. **更新与删除**:实时搜索意味着当新的文档被添加或现有文档被修改或删除时,搜索结果应立即反映这些变化。Lucene 提供了 Document 和 IndexWriter 类来实现这一点。添加、删除和更新文档无需重建整个索引。 2. ...

    lucene实现企业搜索实例

    **Lucene实现企业搜索实例** 在企业环境中,高效、精准的搜索能力是至关重要的,它可以帮助员工快速定位信息,提高工作效率。Apache Lucene是一个开源的全文检索库,它提供了强大的文本搜索功能,能够帮助企业构建...

    lucene高级搜索进阶项目_03

    在本项目"Lucene高级搜索进阶项目_03"中,我们将深入探讨Apache Lucene这一强大的全文搜索引擎库。Lucene是Java开发的开源库,它提供...通过这个项目,你将具备使用Lucene创建高效、灵活和可扩展的全文搜索系统的技能。

    lucene 4.7.2 Demo

    本文将深入探讨Lucene 4.7.2的特性,包括创建、删除和修改索引,以及高级搜索功能如通用对象搜索、范围搜索、排序和高亮显示。 首先,让我们了解如何利用Lucene 4.7.2创建索引。创建索引是全文检索的基础,它涉及将...

    基于LUCENE的搜索引擎的设计与实现源代码

    - **索引创建**:LUCENE提供了API来创建索引,包括添加、删除和更新文档。 - **查询解析**:用户输入的查询字符串会被解析成一系列的查询条款。 - **搜索**:使用索引来执行查询,返回相关性最高的文档。 - **...

    lucene.net 2.9.2 实现索引生成,修改,查询,删除实例

    在这个实例中,我们将深入探讨如何使用Lucene.NET 2.9.2来实现索引的生成、修改、查询和删除。 **一、索引生成** 首先,我们需要创建一个索引,这是全文检索的基础。在Lucene.NET中,我们通常会定义一个文档类,...

    Java搜索引擎 Lucene

    1. **创建索引**:首先,需要将要搜索的数据(如文件内容)读取并分词,然后使用Lucene API创建索引。 2. **添加文档**:将分词后的数据作为文档添加到索引中,每个文档都有唯一的ID和多个字段。 3. **更新索引**:...

    lucene 实现类似百度搜索

    **Lucene 搜索引擎实现详解** Lucene 是一个开源全文搜索引擎库,由 Apache 软件基金会维护。它提供了一套强大的数据结构和算法,用于高效地存储和检索大量文本数据。通过 Lucene,开发者可以轻松地在自己的应用...

    lucene3.0.3搜索的使用示例

    从"lucene3.0.3搜索的使用示例"中,你将学习如何编写代码来完成这些任务,包括索引创建、查询构造、搜索执行以及结果处理等。 在压缩包中的示例代码通常会涵盖这些概念,通过实际运行和调试这些代码,你可以深入...

    基于Lucene的桌面搜索引擎.doc

    此外,通过使用Lucene的更新和删除机制,可以确保索引始终与数据源保持同步,保证搜索的准确性。 综上所述,基于Lucene的桌面搜索引擎通过使用强大的分析器和高效的索引技术,实现了在桌面环境中快速、准确地查找...

    [Lucene搜索引擎开发权威经典].zip

    9. **更新和删除索引**:Lucene支持实时索引更新,可以在添加、修改或删除文档后立即反映到搜索结果中。 10. **优化**:定期进行索引优化可以合并多个段,减少索引碎片,提高搜索性能。 11. **多语言支持**:...

    lucene2.0.0搜索引擎源代码

    3. **IndexWriter**:用于创建和更新索引,它管理了索引的写入流程,包括添加、删除文档,以及合并段(Segments)以优化性能。 4. **IndexReader和IndexSearcher**:IndexReader用于读取已建立的索引,而...

    Lucene(搜索引擎)开发包

    - **IndexWriter**:用于创建和更新索引,支持批量添加、删除和更新文档。 - **Directory**:类似于文件系统目录,用于存储索引文件,可以是硬盘、内存或其他持久化存储。 - **IndexReader**:读取索引,提供对...

    lucene3.5的创建和增删改查

    本文将详细介绍如何在Lucene 3.5中进行索引的创建、文档的添加、删除、修改和查询操作。 一、创建索引 1. 初始化环境:首先,我们需要导入Lucene的相关库,包括核心库(lucene-core-3.5.0.jar)、分析库(lucene-...

    lucene实现 源代码,里面还含有索引创建,搜索等功能

    在这个压缩包文件中,包含的源代码着重展示了如何利用Lucene进行索引创建和搜索操作,这些都是Lucene的核心功能。 首先,让我们了解一下Lucene的索引创建过程。在Lucene中,数据被转化为一种便于搜索的结构——倒排...

Global site tag (gtag.js) - Google Analytics