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

代码片段,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.        }    }

 

 

 

 

 

 

 

 

 

<script type="text/javascript">// </script><script type="text/javascript" src="http://www.cnblogs.com/static/js/3rd/ueditor1.2/third-party/SyntaxHighlighter/shCore.js"></script><script type="text/javascript" src="https://note-static.sdo.com/p?/static/js/lib~j_1161,lib~j.ui_1998,lib~j.json-2.2_1161,my~note.younimsg_1161,lib~py_1161,my~note.layer_1922,my~note.lightbox_1161,my~note.content_3279.js"></script>

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