Lucene学习笔记(1)
生活随笔
收集整理的這篇文章主要介紹了
Lucene学习笔记(1)
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
Lucene學習筆記可以搜索文本文件,理論上可以搜索任何類型的數據。只要先把數據轉化為文本,就可以對數據進行索引和搜索。使用了反向索引的機制,維護一個詞/短語的表,對于每個詞和短語都有一個鏈表描述有哪些文檔包含這個詞和短語。這樣用戶輸入查詢條件的時候,搜索引擎先對輸入的條件分詞,分成詞和短語,然后到建立好的索引上面查找,最終返回索引相關的文檔。1、首先對文檔進行分詞。2、然后將分詞的結果進行索引的創建。結構化數據:數據庫數據,元數據半結構化數據:xml、html非結構化數據:全文數據,word文檔,email全文檢索:新建立索引,在進行搜索。建立索引1、準備文檔2、將文檔傳給分詞組件tokenizera) 將文檔分成一個個的單詞b) 去除標點c) 利用停詞集合,去除停詞(最普通的詞,沒有任何意義,英文中的the,a,this等等)d) 得到詞元token3、將詞元token傳給語言處理組件linguistic processora) 變為小寫b) 將單詞縮減為詞根形式,如cars到car,drove到drive,前者是縮減,后者是轉變。前者給予某種算法,例如去除s,去除ing添加e等等,后者基于字典做轉變就可以了。這兩種方法不是互斥的,有交集,有的詞匯用兩種方法都可以縮減。c) 語音處理的詞稱為詞termd) 只有這樣處理,搜索drove和drive才能都命中。4、將得到的詞term傳給索引組件idnexer去建立文檔倒排列表a) 利用得到的詞term創建一個字典b) 例如Term document idStudent 1Allow 1Go 1My 2Friend 2Allow 2c) 對字典按照字母順序排序Term document idAllow 1Allow 2Friend 2Go 1My 2Student 1d) 合并相同的詞trem,形成文檔倒排列表posting liste) Document frequency文檔頻次,表示有多少個文檔包含當前詞。f) Frequency詞頻次,表示一個文檔中有多少個當前詞。搜索1、用戶輸入查詢語句。例如用戶輸入:lucene AND learned NOT hadoop,表明用戶想要找包含lucene和learned而不包含hadoop的文檔。2、對查詢語句進行語法分析,詞法分析,幾語言處理a) 識別單詞和關鍵字,lucene和learned是單詞,AND和NOT是關鍵字b) 形成語法樹c) 語言處理,同建立索引過程中的語言處理相同,如learned變成learn,形成經過語言處理的語法樹3、搜索索引a) 在反向索引表中找到lucene、learn和hadoop的文檔鏈表b) 其次對lucene和learn的文檔鏈表進行合并c) 在合并的鏈表中去除包含hadoop的文檔鏈表d) 剩下的就是我們要找的文檔鏈表4、根據得到的文檔和查詢語句的相關性,對結果進行排序a) 如何判斷文檔的之間的關系b) 首先一個文檔有很多詞,c) 對于文檔之間的關系,不同的term的重要性不同。要判斷文檔的關系,首先要找出那些term對于文檔是重要的。找出詞term對于文檔的重要性的過程稱為計算詞的權重term weight的過程。權重term weight的參數有兩個,第一個是詞term,第二個是文檔documentd) 影響一個詞term在文檔中的重要性有兩個因素:e) Term frequency(tf):一個詞在文檔中出現的次數,越多說明越重要。f) Document frequency(df):有多少文檔包含一個詞term,越多說明越不重要。
轉載于:https://blog.51cto.com/virusswb/696784
總結
以上是生活随笔為你收集整理的Lucene学习笔记(1)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 融易宝项目之EasyExcel和数据字典
- 下一篇: 我的iOS学习历程 - OC第九天