一、須要添加的依賴java
<!-- Lucene core -->
<dependency>
<groupId>org.apache.lucene</groupId>
<artifactId>lucene-core</artifactId>
<version>7.2.1</version>
</dependency>
<!-- Lucene解析庫 -->
<dependency>
<groupId>org.apache.lucene</groupId>
<artifactId>lucene-queryparser</artifactId>
<version>7.2.1</version>
</dependency>
<!-- Lucene附加的分析庫 -->
<dependency>
<groupId>org.apache.lucene</groupId>
<artifactId>lucene-analyzers-common</artifactId>
<version>7.2.1</version>
</dependency>
<!-- 索引分詞,能夠選用其餘分詞器 -->
<dependency>
<groupId>org.apache.lucene</groupId>
<artifactId>lucene-analyzers-smartcn</artifactId>
<version>7.2.1</version>
</dependency>
二、索引建立及測試apache
package com.zxf.lucene.util; import com.zxf.lucene.analyzer.lucene.IKAnalyzer; import org.apache.lucene.document.*; import org.apache.lucene.index.IndexWriter; import org.apache.lucene.index.IndexWriterConfig; import org.apache.lucene.store.Directory; import org.apache.lucene.store.FSDirectory; import java.io.File; import java.io.IOException; import java.nio.file.Paths; /** * Created by jiangyang on 2019/3/8. */ public class LuceneDemo { /**索架索引*/ public Document createDocument(){ /* 0.Field.Store.NO 查詢出document時,經過document.get(key)沒法獲取值,設置爲NO時只能進行索引查詢 1.使用new TextField("字段名稱","字段值"),採用TextField會將其字段值進行分詞; new TextField("name" ,"張三", Field.Store.NO) 若是不須要分詞的字符串能夠採用 new StringField(key,value)形式,若是不分詞對於value字段值有長度限制,超出則報異常 2. NumericDocValuesField:數值型,不會進行分詞 document.add(new NumericDocValuesField("mynumber", 1234)); //至關於Field.Store.YES document.add(new StoredField("mynumber", 1234)); 3. */ Document document = new Document(); document.add(new TextField("name" ,"張三", Field.Store.NO)); document.add(new NumericDocValuesField("id", 1234)); document.add(new StoredField("id", 1234)); document.add(new StringField("nickname", "冷太陽",Field.Store.YES)); return document; } /** * @param dir 存放索引文件的 文件存放路徑 * @return */ public IndexWriter getIndexWriterInstance(String dir) { File file = new File(dir); if (!file.exists()) { file.mkdirs(); } try{ Directory directory = FSDirectory.open(Paths.get(dir)); IKAnalyzer ikAnalyzer = new IKAnalyzer(); //設置相應的分詞器 IndexWriterConfig indexWriterConfig = new IndexWriterConfig(ikAnalyzer); return new IndexWriter(directory, indexWriterConfig); } catch (Exception e) { e.printStackTrace(); } return null; } /** * 測試 * @param args */ public static void main(String[] args) { LuceneDemo demo = new LuceneDemo(); String dir = "索引文件夾的路徑"; IndexWriter indexWriter = demo.getIndexWriterInstance(dir); Document document = demo.createDocument(); try { //添加索引 indexWriter.addDocument(document); indexWriter.commit(); indexWriter.close(); } catch (IOException e) { e.printStackTrace(); } } }