`
conkeyn
  • 浏览: 1525098 次
  • 性别: Icon_minigender_1
  • 来自: 厦门
社区版块
存档分类
最新评论

第一个Lucene实例 (3.6)

 
阅读更多

运行lucene所需要的JAR包 
lucene-core-3.6.0.jar(核心包) 
lucene-analyzers-3.6.0.jar(分词器) 
lucene-highlighter-3.6.0.jar(高亮) 
lucene-memory-3.6.0.jar(高亮) 

 

public class HelloWord {  
    public static void createIndexFile() {  
        IndexWriter indexWriter=null;  
        try {  
            // 需要的分词器  
            Analyzer analyzer = new StandardAnalyzer(Version.LUCENE_36);  
            // 创建的是哪个版本的IndexWriterConfig  
            IndexWriterConfig indexWriterConfig = new IndexWriterConfig(  
                    Version.LUCENE_36, analyzer);  
            // 创建系统文件----- ./ 当前路径下的  
            Directory directory = new SimpleFSDirectory(new File("./indexDir/"));  
            indexWriter = new IndexWriter(directory,indexWriterConfig);   
            //获取实体对象  
            Article article=new Article(11,"最XX的城市","XX");    
            //indexWriter添加索引  
            Document doc=new Document();  
            //文本中添加内容            标题      内容  
            /*doc.add(new Field("title","中国的首都在哪里",Store.YES,Index.ANALYZED));  
            doc.add(new Field("content","中国的首都在北京",Store.YES,Index.ANALYZED));*/      
            doc.add(new Field("id",article.getId().toString(),Store.YES,Index.ANALYZED));  
            doc.add(new Field("title",article.getTitle().toString(),Store.YES,Index.ANALYZED));  
            doc.add(new Field("content",article.getContent().toString(),Store.YES,Index.ANALYZED));   
            //添加到索引中去  
            indexWriter.addDocument(doc);     
        } catch (IOException e) {  
            // TODO Auto-generated catch block  
            e.printStackTrace();  
        }finally{  
            if(indexWriter!=null){  
                try {  
                    indexWriter.close();  
                }  catch (IOException e) {  
                    // TODO Auto-generated catch block  
                    e.printStackTrace();  
                }  
            }  
        }  
    }  
    //如果查询是需要用到解析器,那解析器必须和创建时的解析器相同  
    public static void searchIndexFileResult() throws IOException {   
        List<Article> articles=new ArrayList<Article>();      
        //得到索引的目录  
        Directory directory = new SimpleFSDirectory(new File("./indexDir/"));  
        //根据目录打开一个indexReader  
        IndexReader indexReader=IndexReader.open(directory);  
        //System.out.println(indexReader.maxDoc());   
        //获取最小值的document对象  
        //Document doc=indexReader.document(0);  
        //获取最大值的document对象  
        //Document doc=indexReader.document(indexReader.maxDoc()-1);  
        //document对象的get(字段名称)方法获取字段的值  
        /*System.out.println(doc.get("id"));  
        System.out.println(doc.get("title"));  
        System.out.println(doc.get("content"));*/     
        int n=indexReader.maxDoc();  
        for(int i=0;i<n;i++){  
            Document doc=indexReader.document(i);  
            Article article=new Article();  
            if(doc.get("id")==null){  
                System.out.println("id为空");  
            }else{  
                article.setId(Integer.parseInt(doc.get("id")));  
                article.setTitle(doc.get("title"));  
                article.setContent(doc.get("content"));  
                articles.add(article);  
            }  
        }  
        for(Article article:articles){  
            System.out.println(article.toString());  
        }     
    }  
    public static void main(String[] args) throws IOException {  
        // 建立要索引的文件  
    //  createIndexFile();  
        // 从索引文件中查询数据  
        searchIndexFileResult();  
        // 获得结果,然后交由相关应用程序处理  
    }  
}
 

 

 

分享到:
评论

相关推荐

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

    【标题】:“第一个Lucene 3.6 (3.X) 入门实例” 【内容详解】 Lucene是一个高性能、全文本搜索库,由Apache软件基金会开发。它为Java开发者提供了强大的文本检索功能,广泛应用于搜索引擎、信息检索系统等场景。...

    开源软件之道.part2of2

    这是第二部分,两个部分需要一起下载后,放在同一级目录,解压即可。 目录 第1篇 了解开源软件 第1章 开源软件概述 2 1.1 开源软件的理解 2 1.2 开源软件的定义 3 1.3 开源软件定义的意义 5 1.4 开源软件和其他...

    opencms内容管理

    - **去掉第一个opencms**:配置Apache使其不再包含OpenCMS名称。 - **去掉第二个opencms**:进一步优化URL,使得最终的网站地址更加简洁。 - **集成Apache、Tomcat和OpenCms的意义**:通过这种方式,可以实现静态...

    开源企业搜索引擎SOLR的应用教程

    1. **基于Lucene自封装实现站内搜索**:虽然此方案具有较高的灵活性,但考虑到开发工作量大且后期维护成本较高,一般不作为首选。 2. **调用第三方搜索引擎API**(如Google、Baidu):这种方式虽然简便快捷,但由于...

    solr教材-PDF版

    1. **基于Lucene自封装实现站内搜索**:这种方式需要较大的开发投入,并且在后续维护和扩展上也会比较复杂,因此在本教材中并未推荐此方法。 2. **调用第三方搜索引擎API**(如Google或Baidu API):虽然这种方式...

    Solrj 中文教程

    Solr支持分布式部署,可以通过ZooKeeper管理多个Solr实例,实现负载均衡和故障恢复。 #### 二、Solr的安装与配置 ##### 2.1 在Tomcat下Solr安装 在Tomcat环境下安装Solr的过程相对简单,主要包括: - **2.1.1 安装...

Global site tag (gtag.js) - Google Analytics