初步認識Luence,簡單按照官方文檔做了個例子,大牛繞開,僅供小白路過參考。如有錯誤,歡迎指正批評。
建一個簡單工程,並且加入這幾個小奶瓶,如下圖:
注:版本不同,可能對jdk的需求是不同的,這個需要注意,我在嘗試的6.1.0的時候,在jdk1.7下會報錯,在java8下就沒問題。5.x的在1.7下應該沒問題,具體需要自行百度。
然後根據官網例子,稍加修改,如下:本例子基於內存存儲
//創建詞法分析器
Analyzer analyzer = new StandardAnalyzer();
//確定索引文件的位置,方式如下爲 內存存儲
Directory directory = new RAMDirectory();
//Directory directory = FSDirectory.open("/tmp/testindex"); 本地文件存儲
//索引文件的寫入
IndexWriterConfig config = new IndexWriterConfig(analyzer);
IndexWriter iwriter = new IndexWriter(directory, config);
//創建文檔
Document doc = new Document();
String text = "This is the text to be indexed.";
doc.add(new Field("fieldname", text, TextField.TYPE_STORED));
String text1 = "This is the text to be indexed1.";
doc.add(new Field("testcontent", text1, TextField.TYPE_STORED));
Document doc1 = new Document();
String text2 = "This is the text to be indexed2.";
doc1.add(new Field("fieldname", text2, TextField.TYPE_STORED));
Document doc2 = new Document();
String text3 = "This is the text to be indexed3.";
doc2.add(new Field("fieldname", text3, TextField.TYPE_STORED));
//將文檔寫入索引操作流
iwriter.addDocument(doc);
iwriter.addDocument(doc1);
iwriter.addDocument(doc2);
iwriter.close();
System.out.println("----");
//索引目錄流對象創建
DirectoryReader ireader = DirectoryReader.open(directory);
//創建搜索對象
IndexSearcher isearcher = new IndexSearcher(ireader);
//查詢解析器,第一個參數是默認的搜索域
QueryParser parser = new QueryParser("fieldname", analyzer);
Query query = parser.parse("indexed");
//模糊查詢
Term term = new Term("fieldname","indexed");
FuzzyQuery fuzzyQuery=new FuzzyQuery(term);
//執行搜索,取前一百條符合記錄的數據//這裏使用fuzzyQuery進行模糊查詢,如果用query 只會出現一種結果“indexed”
TopDocs top = isearcher.search(fuzzyQuery, 100);
ScoreDoc[] hits = top.scoreDocs;
for (int i = 0; i < hits.length; i++) {
Document hitDoc = isearcher.doc(hits[i].doc);
System.out.println("[Document="+hitDoc+",file:"+hitDoc.get("fieldname")+"].");
System.out.println("查詢出的結果是:"+hitDoc.get("fieldname"));
}
ireader.close();
directory.close();
運行結果如下: