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...