Lucene中的一些基本概念

譯自http://www.lucenetutorial.com/basic-concepts.html

基本原理

Lucene是一個java全文檢索引擎庫,方便我們在應用或是網站中加入檢索功能。

Lucene提供全文檢索功能的原理是:將可被檢索的內容加入到全文檢索索引中,並提供對該索引的查詢接口,返回排序後的查詢結果,排序的依據既可以是與查詢語句的相關度,也可以是某一任意字段例如文檔的更新時間。

可被檢索的內容可以有很多種來源,例如SQL/NoSQL數據庫、文件系統,甚至包括網站。


檢索和索引(Searching and Indexing

Lucene能夠得到快速的檢索響應是因爲索引機制,它並不直接檢索文本,而是對索引進行檢索。這種機制類似於從一本書中根據關鍵字找出相關頁面時,通過書末尾的索引找到,而非對書的每一頁查找關鍵字。

(注:例如在一個書中查找包含關鍵字“北京”的頁,索引機制會利用書後的索引“北京:18,27”得到結果,而非遍歷每一頁找符合條件的頁)

這種索引被稱爲“倒排索引”,因爲它將以頁面爲中心的數據結構(page->words)轉變成了以關鍵字爲中心的數據結構(word->pages)。


文檔(document)

在Lucene中,文檔(Document)是進行查找和索引的單元。

一個索引包含一個或多個文檔。

建立索引(Indexing)主要涉及將document加入到IndexWriter,檢索(Searching)主要涉及利用IndexSearcher從index中抽取document。

Lucene中的document並不一定是通常意義上由英語單詞構成的文檔。比如你給數據庫中的用戶表創建了一個lucene索引,索引中的每個用戶可以被看做是一個Lucene document。


字段(fields)

一個document由多個field構成。一個field簡單來說是一個名值對(name-value)。例如,在應用中常見的一個field是title。對於title字段,名是title,對應的值爲title標題中包含的內容。

Lucene的建立索引涉及創建包含多個field的document,並且將document加入到IndexWriter中。


檢索(Searching)

檢索的前提要求是索引已被創建。檢索包含創建query對象(一般用QueryParser接口),創建IndexSearcher對象,並利用query對象,返回匹配結果。


查詢(Queries)

Lucene有其自己的迷你語言來執行查詢。請到lucene查詢語法閱讀更多。

Lucene查詢語法允許用戶指定哪些field可以被檢索,哪些field需要給定更高的權重,也提供了布爾查詢功能和其他的功能。

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