Luence簡單實現2

上一篇是基於內存存儲的,這次的例子是基於本地存儲索引庫。

上一次的代碼稍微修改,代碼如下:

//創建詞法分析器
Analyzer analyzer = new StandardAnalyzer();

//索引庫路徑
Path path = new File("D:\\123").toPath();
//確定索引文件的位置,方式如下爲 本地文件存儲
Directory directory = FSDirectory.open(path);

//索引文件的寫入
IndexWriterConfig config = new IndexWriterConfig(analyzer);
IndexWriter iwriter = new IndexWriter(directory, config);

//目標資源文件
File docFile = new File("F:\\API文檔");
for(File f : docFile.listFiles()){
Document document = new Document();
System.out.println("path------"+f.getPath());
Field field = new Field("path", f.getPath(),TextField.TYPE_STORED);
document.add(field);
iwriter.addDocument(document);
}
iwriter.close();

System.out.println("----");

//索引目錄流對象創建
DirectoryReader ireader = DirectoryReader.open(directory);
//創建搜索對象
IndexSearcher isearcher = new IndexSearcher(ireader);

//查詢解析器,第一個參數是默認的搜索域
QueryParser parser = new QueryParser("path", analyzer);
Query query = parser.parse("Java");

//模糊查詢
Term term = new Term("path","Java");
FuzzyQuery fuzzyQuery=new FuzzyQuery(term);
//執行搜索,取前一百條符合記錄的數據

TopDocs top = isearcher.search(fuzzyQuery, 100);
ScoreDoc[] hits = top.scoreDocs;
System.out.println(hits.length);

for (int i = 0; i < hits.length; i++) {
  Document hitDoc = isearcher.doc(hits[i].doc);
  System.out.println("[Document="+hitDoc+",file:"+hitDoc.get("path")+"].");
  System.out.println("查詢出的結果是:"+hitDoc.get("path"));
}

ireader.close();
directory.close();

 運行結果如下:

代碼執行,會在所指的本地索引目錄下生成索引文件:

 

注意:程序每執行一次就會重複增加索引文件進去,會出現重複搜索結果,所以將來肯定是用定時器去生成索引的。

 

將來使用到Luence,會實際業務需求需要怎麼使用,就要具體情況具體分析了,萬變不離其宗,總是用到最基礎的那些東西。

 

如有不正確之處,歡迎指正。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章