初學lucene 菜鳥篇

2021-07-10 16:36:20 字數 2076 閱讀 8021

首先了解一下什麼是全文檢索

舉個例子:比如我們在乙個磁碟上有很多檔案,而有一天我想通過關鍵字搜尋出包含的檔案。如:我們輸入lucene,所有內容含有lucene的檔案都會被檢查出來,這就是全文檢索(鄙人的個人定義)。其實,通過上述的例子,我們很容易會想到,關鍵字與這些檔案需要建立乙個相關對映。在lucene中,其實是使用了一種「倒排索引」的技術來實現的。

有了這種對映關係,我們就來看看lucene的架構設計(下圖是網上很多資料中比較通用的一張圖)

我們可以看到,lucene的使用主要體系在兩個步驟:

1.建立索引,通過indexwriter對不同檔案進行索引的建立,並將其儲存在索引相關檔案儲存的位置中。

2.通過索引查詢關鍵字相關文件。

索引的建立

首先,我們需要定義乙個詞法分析器

analyzer analyzer = new standardanalyzer(version.lucene_current);
第二步,確定索引檔案儲存位置

1 本地檔案儲存

directory directory = fsdirectory.open("/tmp/testindex");
2 記憶體儲存

directory directory = new ramdirectory();
兩者按照自己需求進行選擇

第三步,建立indexwriter,進行索引檔案的寫入

indexwriterconfig config = new indexwriterconfig(version.lucene_current, analyzer);

indexwriter iwriter = new indexwriter(directory, config);

這裡的indexwriterconfig,其中包含了兩個引數,第乙個是目前的版本,第二個是詞法分析器analyzer。

第四步,內容提取,進行索引的儲存

document doc = new document();

string text = "this is the text to be indexed.";

doc.add(new field("fieldname", text, textfield.type_stored));

iwriter.adddocument(doc);

iwriter.close();

這就是索引建立的過程

關鍵字查詢

第一步,開啟儲存位置

directoryreader ireader = directoryreader.open(directory);
第二步,建立搜尋器

indexsearcher isearcher = new indexsearcher(ireader);
第三步,進行關鍵字查詢

queryparser parser = new queryparser(version.lucene_current, "fieldname", analyzer);

query query = parser.parse("text");

scoredoc hits = isearcher.search(query, null, 1000).scoredocs;

assertequals(1, hits.length);

for (int i = 0; i < hits.length; i++)

第四步,關閉查詢器

ireader.close();

directory.close();

以上就是乙個簡單的建立索引與搜尋關鍵字的流程。具體的demo這裡就不寫了。第一次寫這個,所以也只是初略的講些簡單操作上的事情。希望以後能越寫越好。這只是乙個小小的開始。

菜鳥初學技術篇(之一)

在做對日軟體外包行業的it公司呆了近三年了,對技術仍可以說是一問三不知。越來越意識到僅僅靠語言是沒有出路的!我決定開始學習技術,從最基礎的開始學起。這個想法產生很久了,但卻一直未下定決心,未能堅持。一想起周五日本人說的那話,永久 開発 他說的的確是沒錯,但字字都讓我覺得那麼刺眼!這更促使我要去學,我...

Lucene基礎篇總結

到此為止,以前所發表的關於 lucene 的文章就把 lucene 的基礎篇包括玩完了。從 搜尋引擎 開始,我們對搜尋引擎和 lucene 有了初步的認識和一定了解,這些內容,對於幫助我們從乙個資訊檢索系統的門外漢變成乙個局內人有著重大的意義 摘自 開發自己的搜尋引擎 邱哲 符滔滔編著 人民郵電出版...

Lucene簡介 理論篇

lucene 是乙個軟體程式的庫或者說是乙個工具套件,而不是乙個完全的具有搜尋特性的應用程式。它關注於自己的文字檢索和搜尋功能,提供api來完成商業中所涉及到的搜尋功能。在搜尋功能中,lucene的功能如圖深色框所示。外圍的功能組要主要由一些比較流行的框架來實現,比如solr elasticsear...