lucene、簡介

1.什麼是lucene
Lucene是一個全文搜索框架,而不是應用產品。所以它並不像http://www.baidu.com/ 或者google Desktop那麼拿來就能用,它只是提供了一種工具讓你能實現這些產品。算法

2. lucene能作什麼
•要回答這個問題,先要了解lucene的本質。實際上lucene的功能很單一,說到底,就是你給它若干個字符串,而後它爲你提供一個全文搜索服務,告訴你你要搜索的關鍵詞出如今哪裏。知道了這個本質,你就能夠發揮想象作任何符合這個條件的事情了。你能夠把站內新聞都索引了,作個資料庫;你能夠把一個數據庫表的若干個字段索引發來,那就不用再擔憂由於「%like%」而鎖表了;你也能夠寫個本身的搜索引擎……數據庫

3. 你該不應選擇lucene
•下面給出一些測試數據,若是你以爲能夠接受,那麼能夠選擇。
–測試一:250萬記錄,300M左右文本,生成索引380M左右,800線程下平均處理時間300ms。
–測試二:37000記錄,索引數據庫中的兩個varchar字段,索引文件2.6M,800線程下平均處理時間1.5ms。框架

4. lucene爲何這麼快
–倒排索引
–壓縮算法
–二元搜索工具

5. 倒排索引
–根據屬性的值來查找記錄。這種索引表中的每一項都包括一個屬性值和具備該屬性值的各記錄的地址。因爲不是由記錄來肯定屬性值,而是由屬性值來肯定記錄的位置,於是稱爲倒排索引(invertedindex)
–單詞——文檔矩陣測試

•lucene的工做方式lucene提供的服務實際包含兩部分:一入一出。所謂入是寫入,即將你提供的源(本質是字符串)寫入索引或者將其從索引中刪除;所謂出是讀出,即向用戶提供全文搜索服務,讓用戶能夠經過關鍵詞定位源搜索引擎

•寫入流程源字符串首先通過analyzer處理,包括:分詞,分紅一個個單詞;去除stopword(可選)。將源中須要的信息加入Document的各個Field中,並把須要索引的Field索引發來,把須要存儲的Field存儲起來。將索引寫入存儲器,存儲器能夠是內存或磁盤。
•讀出流程用戶提供搜索關鍵詞,通過analyzer處理。對處理後的關鍵詞搜索索引找出對應的Document。用戶根據須要從找到的Document中提取須要的Field。google

•document 用戶提供的源是一條條記錄,它們能夠是文本文件、字符串或者數據庫表的一條記錄等等。一條記錄通過索引以後,就是以一個Document的形式存儲在索引文件中的。用戶進行搜索,也是以Document列表的形式返回。
•field 一個Document能夠包含多個信息域,例如一篇文章能夠包含「標題」、「正文」、「最後修改時間」等信息域,這些信息域就是經過Field在Document中存儲的。Field有兩個屬性可選:存儲和索引。經過存儲屬性你能夠控制是否對這個Field進行存儲;經過索引屬性你能夠控制是否對該Field進行索引。這看起來彷佛有些廢話,事實上對這兩個屬性的正確組合很重要線程

相關文章
相關標籤/搜索