DotLucene搜尋引擎Demo之 建立索引

2021-09-09 05:12:18 字數 2777 閱讀 2185

dotlucene的

官方**

這裡測試。我也記得在我的乙個**

1,本文的demo採用了dotlucene最新穩定版1.4.3

2,開發環境是vs2005。

3,demo被我劃成了兩個部分,乙個部分是乙個console程式,就是本文所講的,主要就是怎麼樣建立索引,另

乙個部分是個web程式,關鍵說的是搜尋這個部分所建立的索引。

好了,我們現在開始進入怎麼用dotlucene來建立索引了。

什麼是索引呢?我也不太明白,我是這樣理解的,索引就是用來加快查詢資料的速度的,比如我們小時候讀書的時候課本前面有那個第一課:什麼什麼的。。。。。。第幾頁,這應該就是索引吧。用dotlucene建立索引也就是說把某些檔案內容編入某個目錄下的索引。

首先執行vs2005,選擇檔案--新建專案,在彈出的對話方塊選:其他專案型別裡的visual studio解決方案,選右邊的空白解決方案,輸入名字:searchdemo,位置選d:\確定。

再在解決方案searchdemo右鍵選新增---再選---新建解決方案資料夾,輸入資料夾名字為indexer.我再找到d:\searchdemo,再這個資料夾裡面新建個目錄,叫wwwroot,大家就知道這個目錄是放web 程式的,我們在iis管理器裡面新建設個虛擬目錄,指向d:\searchdemo\wwwroot目錄,名字叫searchdemo.

我們再在vs的解決方案searchdemo單季右鍵選新增--新建解決方案資料夾,輸入資料夾名字為web,其實這兩個資料夾名都是vs虛擬的,其實並不存在。我們然後在第乙個專案indexer上右鍵選:新增==新建專案,再彈出的面板左邊選v c#--windows--右邊選控制台應用程式,輸入名字indexer,確定,這個時候vs會在d:\searchdemo目錄下新增個indexer目錄,然後我們再在新新增的名為web專案上右建--新增---現有**---選擇我們剛剛建立的searchdemo就是。

我們現在給indexer控制台專案新增引用lucene.net.dll

我們現在在indexer控制台專案裡新增個類:intrnetindexer.cs;

先說明下doc.add(field.unstored("text", parsehtml(html)));

doc.add(field.keyword("path", relativepath));

doc.add(field.text("title", gettitle(html)));

索引是由docuemnt物件組成,而docuemnt物件又是由字段物件組成.

field.unstored方法在其官方**上的說明是:constructs a string-valued field that is tokenized and indexed, but that is not stored in the index. term vector will not be stored for this field.搜價110的eunge幫忙翻譯下成這樣:

構造乙個string型別的字段,它將被分詞和索引,但是它不會被儲存在索引中。關於這個欄位的詞向量不會被儲存,我一直都未能夠理解關於這個欄位的詞向量不會被儲存的含義,汗。

**如下:

using system;

using system.collections.generic;

using system.text;

using system.io;

using system.text.regularexpressions;

using lucene.net.analysis.standard;

using lucene.net.documents;

using lucene.net.index;

namespace indexer

public void adddirection(directoryinfo directory,string pattern)

private void addsubdirectory(directoryinfo directory)

foreach (directoryinfo di in directory.getdirectories())

}private void addhtmltodocument(string path)

int relativepathstartsat = this.docrootdirectory.endswith("\\") ? this.docrootdirectory.length : this.docrootdirectory.length + 1;

string relativepath = path.substring(relativepathstartsat);

doc.add(field.unstored("text", parsehtml(html)));

doc.add(field.keyword("path", relativepath));

doc.add(field.text("title", gettitle(html)));

writer.adddocument(doc);

}///

/// 把讀取的檔案中的所有的html標記去掉,把 替換成空格

///

///

///

private string parsehtml(string html)

///

/// 獲得讀取的html文擋的標題

///

///

///

private string gettitle(string html)

public void close()}}

注:本文**

搜尋引擎 索引

正排索引 文件編號,單詞編號,單詞的數量,單詞出現的位置。倒排索引 1,單詞詞典,儲存單詞以及統計資訊,單詞在記錄表中的便宜,可常駐記憶體,用雜湊表儲存。2,記錄表,單詞對應的文件集合,記錄單詞出現的數目 位置。文件採用差分變長編碼。其中文件可按編號公升序排列 可利用差分編碼 也可按出現次數排列,可...

MySQL搜尋引擎程式 mysql搜尋引擎

mysql是我們比較常用的一種資料庫軟體。它有著諸多的優點,如開源的,免費的等等。其實它還有乙個很好的特點,那就是有多種引擎可以供你選擇。如果賽車手能根據不同的路況,地形隨手更換與之最適宜的引擎,那麼他們將創造奇蹟。然而目前他們還做不到那樣便捷的更換引擎,但是我們卻可以 所謂知己知彼方可百戰不殆,要...

搜尋引擎 倒排索引

本節通過引入簡單例項,介紹與搜尋引擎索引有關的一些基礎概念,了解這些基礎概念對於後續深入了解索引的工作機制非常重要。3.1.1單詞 文件矩陣 單詞 文件矩陣是表達兩者之間所具有的一種包含關係的概念模型,圖3 1展示了其含義。圖3 1的每列代表乙個文件,每行代表乙個單詞,打對勾的位置代表包含關係。圖3...