亚洲免费在线-亚洲免费在线播放-亚洲免费在线观看-亚洲免费在线观看视频-亚洲免费在线看-亚洲免费在线视频

Lucene .net的學(xué)習(xí)之旅

系統(tǒng) 2037 0

What’s Lucene
Lucene是一個信息檢索的函數(shù)庫(Library),利用它你可以為你的應(yīng)用加上索引和搜索的功能.

Lucene的使用者不需要深入了解有關(guān)全文檢索的知識,僅僅學(xué)會使用庫中的一個類,你就為你的應(yīng)用實現(xiàn)全文檢索的功能.

不過千萬別以為Lucene是一個象google那樣的搜索引擎,Lucene甚至不是一個應(yīng)用程序,它僅僅是一個工具,一個Library.你也可以把它理解為一個將索引,搜索功能封裝的很好的一套簡單易用的API.利用這套API你可以做很多有關(guān)搜索的事情,而且很方便.

What Can Lucene Do

Lucene可以對任何的數(shù)據(jù)做索引和搜索. Lucene不管數(shù)據(jù)源是什么格式,只要它能被轉(zhuǎn)化為文字的形式,就可以被Lucene所分析利用.也就是說不管是MS word, Html ,pdf還是其他什么形式的文件只要你可以從中抽取出文字形式的內(nèi)容就可以被Lucene所用.你就可以用Lucene對它們進(jìn)行索引以及搜索.

How To Use Lucene --- A Simple Example
示例介紹:

為作為輸入?yún)?shù)的文件夾下的所有txt類型的文件做索引,做好的索引文件放入index文件夾.

然后在索引的基礎(chǔ)上對文件進(jìn)行全文搜索.

1. 建立索引

IndexWriterwriter = new IndexWriter( " index " , new StandardAnalyzer(), true );
IndexDocs(writer,
new System.IO.FileInfo(args[ 0 ]));
writer.Optimize();
writer.Close();

IndexWriter是對索引進(jìn)行寫操作的一個類,利用它可以創(chuàng)建一個索引對象然后往其中添加文件.需要注意它并不是唯一可以修改索引的類.在索引建好后利用其他類還可以對其進(jìn)行修改.

構(gòu)造函數(shù)第一個參數(shù)是建立的索引所要放的文件夾的名字.第二個參數(shù)是一個分析對象,主要用于從文本中抽取那些需要建立索引的內(nèi)容,把不需要參與建索引的文本內(nèi)容去掉.比如去掉一些a the之類的常用詞,還有決定是否大小寫敏感.不同的選項通過指定不同的分析對象控制.第三個參數(shù)用于確定是否覆蓋原有索引的.

第二步就是利用這個writer往索引中添加文件.具體后面再說.

第三步進(jìn)行優(yōu)化.

第四步關(guān)閉writer.

下面具體看看第二步:

public static void IndexDirectory(IndexWriterwriter,FileInfofile)
{
if (Directory.Exists(file.FullName))
{
String[]files
= Directory.GetFileSystemEntries(file.FullName);
// anIOerrorcouldoccur
if (files != null )
{
for ( int i = 0 ;i < files.Length;i ++ )
{
IndexDirectory(writer,
new FileInfo(files[i])); // 這里是一個遞歸
}

}

}

else if (file.Extension == " .txt " )
{
IndexFile(file,writer);
}

}




private static void IndexFile(FileInfofile,IndexWriterwriter)
{
Console.Out.WriteLine(
" adding " + file);
try
{
Documentdoc
= new Document();
doc.Add(Field.Keyword(
" filename " ,file.FullName));

doc.Add(Field.Text(
" contents " , new StreamReader(file.FullName)));

writer.AddDocument(doc);
}


catch (FileNotFoundExceptionfnfe)
{

}

}


主要就是兩個函數(shù)一個用于處理文件夾(不是為文件夾建立索引),一個用于真正為文件建立索引.

因此主要集中看一下IndexFile這個方法.首先建立Document對象,然后為Document對象添加一些屬性Field.你可以把Document對象看成是虛擬文件,將來將從此獲取信息.而Field則看成是描述此虛擬文件的元數(shù)據(jù)(metadata).

其中Field包括四個類型:

Keywork

該類型的數(shù)據(jù)將不被分析,而會被索引并保存保存在索引中.
UnIndexed
該類型的數(shù)據(jù)不會被分析也不會被索引,但是會保存在索引.
UnStored
和UnIndexed剛好相反,被分析被索引,但是不被保存.
Text
和UnStrored類似.如果值的類型為string還會被保存.如果值的類型為Reader就不會被保存和UnStored一樣.

最后將每一個Document添加到索引當(dāng)中.

需要注意的是索引不僅可以建立在文件系統(tǒng)上,也可以建立在內(nèi)存中.

例如

IndexWriter writer = new IndexWriter("index", new StandardAnalyzer(), true);

在第一個參數(shù)不是指定文件夾的名字而是使用Directory對象,并使用它的子類RAMDirectory,就可以將索引建立在內(nèi)存當(dāng)中.

2. 對索引進(jìn)行搜索

IndexSearcherindexSearcher = new IndexSearcher(indexDir);
Queryquery
= QueryParser.Parse(queryString, " contents " , new StandardAnalyzer());
Hitshits
= indexSearcher.Search(query);

第一步利用IndexSearcher打開索引文件用于后面搜索,其中的參數(shù)是索引文件的路徑.

第二步使用QueryParser將可讀性較好的查詢語句(比如查詢的詞lucene ,以及一些高級方式lucene AND .net)轉(zhuǎn)化為Lucene內(nèi)部使用的查詢對象.

第三步執(zhí)行搜索.并將結(jié)果返回到hits集合.需要注意的是Lucene并不是一次將所有的結(jié)果放入hits中而是采取一次放一部分的方式.出于空間考慮.

至此,本文演示了如何從一個文件夾下的所有txt文件中查找特定的詞。并圍繞該個實例介紹了lucene.net的索引的建立以及如何針對索引進(jìn)行搜索.最后給出 源代碼 供大家學(xué)習(xí).

Lucene .net的學(xué)習(xí)之旅


更多文章、技術(shù)交流、商務(wù)合作、聯(lián)系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號聯(lián)系: 360901061

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機(jī)微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。

【本文對您有幫助就好】

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描上面二維碼支持博主2元、5元、10元、自定義金額等您想捐的金額吧,站長會非常 感謝您的哦?。?!

發(fā)表我的評論
最新評論 總共0條評論
主站蜘蛛池模板: 国产精品久久久久一区二区 | 男女免费在线视频 | 香蕉久久ac一区二区三区 | 国产成年人在线观看 | 日本一区二区三区免费在线观看 | 99精品在线免费观看 | 亚洲视频在线免费观看 | 九九在线偷拍视频在线播放 | 欧美激情精品久久久久久大尺度 | 尤物福利| 美女性色| 伊人影音 | 久久久久久久国产精品 | 国产 麻豆 欧美亚洲综合久久 | www.不卡视频 | 亚洲精品动漫3d一区二区 | 亚洲国产成人久久99精品 | 九九影院韩国理伦片 | 黄 色 免 费 网站在线观看 | 国产欧美日本在线观看 | 五月婷婷综合激情网 | 久久久久久全国免费观看 | 大片刺激免费播放视频 | 国产成人综合亚洲 | 狠狠色噜噜狠狠狠狠2018 | 亚洲一区在线视频观看 | 日韩精品福利 | 91综合精品网站久久 | 久久国产精品影院 | 狠狠色成人综合 | 国产一在线精品一区在线观看 | 国语一区 | 成人毛片免费免费 | 在线一级视频 | 亚洲第99页 | 美女又黄又免费视频 | jizz孕妇孕交 | 麻豆一区二区三区在线观看 | 97久久精品国产成人影院 | 性欧美一级毛片在线播放 | 婷婷四房综合激情五月在线 |