代码片段,lucene基本操作(基于lucene4.10.2)

1.最基本的创建索引:

 

@Test
    public void testIndex(){ 
        try { 
            Directory directory = FSDirectory.open(new File(LUCENE_DIRECTORY)); 
            IndexWriter indexWriter = new IndexWriter(directory,new IndexWriterConfig(Version.LATEST,new StandardAnalyzer())); 
            Document document = new Document(); 
            TextField titleFiled = new TextField("name","jiaoyiping", Field.Store.YES); 
            document.add(titleFiled); 
            indexWriter.addDocument(document); 
            indexWriter.commit(); 
            indexWriter.close(); 
        } catch (Exception e) { 
            e.printStackTrace();  //To change body of catch statement use File | Settings | File Templates. 
        } 
    }

 

 

 

 

 

2.使用FieldType创建索引

 

//使用FieldType创建Field(4.X之后才有) 
    @Test
    public  void testCreateIndexUseFieldType(){ 
        try { 
            Directory directory = FSDirectory.open(new File(LUCENE_DIRECTORY)); 
            IndexWriter indexWriter = new IndexWriter(directory,new IndexWriterConfig(Version.LATEST,new StandardAnalyzer())); 
            Document document = new Document(); 
            FieldType titleType = new FieldType(); 
            titleType.setIndexed(true);//索引选项 
            titleType.setStored(true); //存储选项 
            Field field = new Field("title","下班",titleType); 
            TextField titleFiled = new TextField("name","jiaoyiping", Field.Store.YES); 
            document.add(titleFiled); 
            document.add(field); 
            indexWriter.addDocument(document); 
            indexWriter.commit(); 
            indexWriter.close(); 
        } catch (Exception e) { 
            e.printStackTrace();  //To change body of catch statement use File | Settings | File Templates. 
        } 
    }

 

 

 

  

 

搜索示例:

 

/** 
    * 搜索示例 
    */
   @Test
   public void  testQuery(){ 
       try { 
           IndexReader indexReader = DirectoryReader.open(FSDirectory.open(new File(LUCENE_DIRECTORY))); 
           IndexSearcher searcher = new IndexSearcher(indexReader); 
           QueryParser queryParser = new QueryParser("title",new StandardAnalyzer()); 
           Query query = queryParser.parse("下班"); 
           ScoreDoc[] docs = searcher.search(query,20).scoreDocs; //命中的数组 
           for(ScoreDoc sd:docs){ 
               int docNumber = sd.doc; 
               System.out.println("文档号: "+docNumber); 
               Document doc = searcher.doc(docNumber);//根据文档号来查询文档 
               System.out.println(doc.get("name")); 
           } 
  
       } catch (Exception e) { 
           e.printStackTrace();  //To change body of catch statement use File | Settings | File Templates. 
       } 
   }

 

 

 

 

 

 

 

 

 

郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。