自學lucene的一些簡單原理

2021-08-30 20:13:17 字數 2025 閱讀 1413

[img][/img]剛開始對lucene很好奇,於是自己就買本書來看看,學了2天大概上掌握了一點lucene的原理,在這裡總結一下,以免時間長了忘記,並且可以給需要的人提供以下參考!

剛開始學習學習一門技術最重要的就是理解它的原理,還有它的api,只有大體上理解這些以後才能更好的學習它!

(1)lucene是乙個全文搜尋引擎,是apache的乙個頂級專案,在國內應用也很廣泛!

(2)lucene建立索引檔案的簡單原理和演算法

(a) 比如有兩個文字檔案 1.txt 裡面內容為 he lived in beijing另乙個檔案為2.txt 裡面內容為

he is my friend

(b)lucene在建立索引檔案之前 需要利用分詞器對檔案內容等進行分詞 比如第乙個檔案的內容就被分為

[ he][live][beijing]

第二個檔案被分為

[he ][is][my][friend]

(因為 in 通常無意義所以就過濾掉了, 同時 live 可以把包含lived lives的文章也給找出來 所以 就把 lived 分詞為live ,同時小寫的也可以把包含大寫的文章找出來 所以就把大寫的分詞為小寫的 比如 he 分詞為 he)

這個時候每乙個文字分詞出來的檔案放在乙個記憶體中的lucene中的document物件中,最好把多個記憶體中的document

合併成乙個segment上!

同時lucene是倒排序的索引,最好結構大概就是這樣:

剛開始對lucene很好奇,於是自己就買本書來看看,學了2天大概上掌握了一點lucene的原理,在這裡總結一下,以免時間長了忘記,並且可以給需要的人提供以下參考!

剛開始學習學習一門技術最重要的就是理解它的原理,還有它的api,只有大體上理解這些以後才能更好的學習它!

(1)lucene是乙個全文搜尋引擎,是apache的乙個頂級專案,在國內應用也很廣泛!

(2)lucene建立索引檔案的簡單原理和演算法

(a) 比如有兩個文字檔案 1.txt 裡面內容為 he lived in beijing另乙個檔案為2.txt 裡面內容為

he is my friend

(b)lucene在建立索引檔案之前 需要利用分詞器對檔案內容等進行分詞 比如第乙個檔案的內容就被分為

[ he][live][beijing]

第二個檔案被分為

[he ][is][my][friend]

(因為 in 通常無意義所以就過濾掉了, 同時 live 可以把包含lived lives的文章也給找出來 所以 就把 lived 分詞為live ,同時小寫的也可以把包含大寫的文章找出來 所以就把大寫的分詞為小寫的 比如 he 分詞為 he)

這個時候每乙個文字分詞出來的檔案放在乙個記憶體中的lucene中的document物件中,最好把多個記憶體中的document

合併成乙個segment上!

同時lucene是倒排序的索引,最好結構大概就是這樣:

關鍵字文章號

出現頻率

出現位置

[img]

[img]

[/img]

(因為是lucene按照字母順序就行排序的)

(2)document可以簡單理解為乙個文字檔案(但實際上不是啊)

(3)field的理解 field 可以理解為map型別的 它就是一些屬性的集合,比如 title ,body,time 等

具體可以看field的類:

public final class field extends abstractfield implements fieldable, serializable

public field(string name, string value, store store, index index)

public field(string name, string value, store store, index index, termvector termvector)

有很多個建構函式我這裡僅僅列兩個

其中segmen裡面包含document,document裡面包含field,field裡面包含term !

自學程式設計的一些建議

昨天和自己的夥伴們結束了2020年的學習計畫,我們明年在戰,兩個月的時間我們組織總結了一下自己的學習習慣,這些可能會對你會有所幫助,或許有一些幫助吧,想學的話,請你耐心看完噢 加油陌生人?關於學習程式設計的心得體會 關於自己寫 的習慣 以下是我自己的經歷 關於如何學習問題 關於工具使用問題 idea...

自學swift 4 一些超簡單的東西

1.表示確定可選是有值的 叫做可選所對應的值強制去包裝 對非可選變數或者常量不可以使用nil。如果 中常量或者變數需要處理沒有值的情況,請宣告為合適型別的可選。如果沒有提供預設值,則會被自動設定為nil like var demotest string?2.斷言assert 使用條件 1.乙個整形的...

自學 iOS 開發的一些經驗

現在回想起來,其實路一直都在,而且有很多條,當初如果有人能夠指出一條還不錯的道,或許就能走得不那麼艱難。於是就有了這篇文章,希望對後人能有所幫助吧。一定的程式設計經驗 這裡說的程式設計經驗是至少熟練一門程式語言,對 oop 有一定的了解,最好熟悉一些基本的設計模式。遇到過的好多 ios 開發,大多是...