寫乙個桌面搜尋引擎還不簡單?只要了解一下倒排索引的概念,每個有興趣的程式設計師,花點時間,都能寫出來乙個自己的桌面搜尋引擎。
為什麼搜尋引擎的查詢速度這麼快? 說明白了很簡單,核心技術就是 「倒排索引」。
「倒排索引」這個名詞很唬人,其實原理很簡單。
file1 (單詞1,單詞2,單詞3,單詞4....)
file2 (單詞a,單詞b,單詞c,單詞d....)
file3 (單詞1,單詞a,單詞3,單詞d....)
建立的倒排索引就是這個樣子:
單詞1 (file1,file3)
單詞2 (file1)
單詞3 (file1,file3)
單詞a (file2, file3)
這就是倒排索引,很簡單吧。
比如乙個檔案要建立索引,就先把它抽成純文字的格式,然後把乙個乙個的單詞切割出來,每個單詞在資料庫裡是一條記錄,單詞作為關鍵字,後面跟著檔案的標識id,位置。
我寫的桌面搜尋引擎 ftfind, 內部也採用了倒排索引技術。http://www.18ie.com
倒排索引技術,點破了很簡單,我想每個有興趣的程式設計師,花點時間,都能寫出來乙個自己的桌面搜尋引擎。
還用google desktop search 幹什麼?看著它右邊不時冒出來的廣告視窗,心裡就不爽。
為什麼不自己寫乙個呢,隨心所欲,自由自在。
下面收集一些需要進一步了解的知識。
在使用索引進行查詢時,首先對需要索引的文件進行預處理,建立關於這些文件的索引結構。索引的技術主要有以下
3lucene
中也是使用的這種技術。字尾陣列技術在短語查詢中具有很快的速度,但是這樣的資料結構在構造和維護時都比較複雜一些。簽名文件技術在
20世紀
80年代時期比較流行,但是後來倒排索引技術逐漸超越了它。
搜尋引擎 倒排索引
本節通過引入簡單例項,介紹與搜尋引擎索引有關的一些基礎概念,了解這些基礎概念對於後續深入了解索引的工作機制非常重要。3.1.1單詞 文件矩陣 單詞 文件矩陣是表達兩者之間所具有的一種包含關係的概念模型,圖3 1展示了其含義。圖3 1的每列代表乙個文件,每行代表乙個單詞,打對勾的位置代表包含關係。圖3...
搜尋引擎 倒排索引
倒排索引基本概念示意圖 假設文件集合包含五個文件,每個文件內容如圖3 3所示,在圖中最左端一欄是每個文件對應的文件編號。我們的任務就是對這個文件集合建立倒排索引。文件集合 需要對每個單詞賦予唯一的單詞編號,同時記錄哪些文當包含這些單詞,如下就是乙個簡單的索引,單詞id記錄了每個單詞的單詞編號,第二欄...
搜尋引擎 倒排索引
一 基本概念 倒排索引源於實際應用中需要根據屬性的值來查詢記錄。這種索引表中的每一項都包括乙個屬性值和具有該屬性值的各記錄的位址。由於不是由記錄來確定屬性值,而是由屬性值來確定記錄的位置,因而稱為倒排索引 inverted index 帶有倒排索引的檔案我們稱為倒排索引檔案,簡稱倒排檔案 inver...