国产一级a片免费看高清,亚洲熟女中文字幕在线视频,黄三级高清在线播放,免费黄色视频在线看

打開APP
userphoto
未登錄

開通VIP,暢享免費(fèi)電子書等14項(xiàng)超值服

開通VIP
Lucene.Net系列一 ---simple example
Lucene.Net系列一 ---simple example - -
What’s Lucene
Lucene是一個(gè)信息檢索的函數(shù)庫(kù)(Library),利用它你可以為你的應(yīng)用加上索引和搜索的功能.
Lucene的使用者不需要深入了解有關(guān)全文檢索的知識(shí),僅僅學(xué)會(huì)使用庫(kù)中的一個(gè)類,你就為你的應(yīng)用實(shí)現(xiàn)全文檢索的功能.
不過千萬(wàn)別以為L(zhǎng)ucene是一個(gè)象google那樣的搜索引擎,Lucene甚至不是一個(gè)應(yīng)用程序,它僅僅是一個(gè)工具,一個(gè)Library.你也可以把它理解為一個(gè)將索引,搜索功能封裝的很好的一套簡(jiǎn)單易用的API.利用這套API你可以做很多有關(guān)搜索的事情,而且很方便.
What Can Lucene Do
Lucene可以對(duì)任何的數(shù)據(jù)做索引和搜索. Lucene不管數(shù)據(jù)源是什么格式,只要它能被轉(zhuǎn)化為文字的形式,就可以被Lucene所分析利用.也就是說不管是MS word, Html ,pdf還是其他什么形式的文件只要你可以從中抽取出文字形式的內(nèi)容就可以被Lucene所用.你就可以用Lucene對(duì)它們進(jìn)行索引以及搜索.
How To Use Lucene --- A Simple Example
示例介紹:
為作為輸入?yún)?shù)的文件夾下的所有txt類型的文件做索引,做好的索引文件放入index文件夾.
然后在索引的基礎(chǔ)上對(duì)文件進(jìn)行全文搜索.
1.       建立索引
IndexWriter writer = new IndexWriter("index", new StandardAnalyzer(), true);
IndexDocs(writer, new System.IO.FileInfo(args[0]));
writer.Optimize();
writer.Close();
IndexWriter是對(duì)索引進(jìn)行寫操作的一個(gè)類,利用它可以創(chuàng)建一個(gè)索引對(duì)象然后往其中添加文件.需要注意它并不是唯一可以修改索引的類.在索引建好后利用其他類還可以對(duì)其進(jìn)行修改.
構(gòu)造函數(shù)第一個(gè)參數(shù)是建立的索引所要放的文件夾的名字.第二個(gè)參數(shù)是一個(gè)分析對(duì)象,主要用于從文本中抽取那些需要建立索引的內(nèi)容,把不需要參與建索引的文本內(nèi)容去掉.比如去掉一些a the之類的常用詞,還有決定是否大小寫敏感.不同的選項(xiàng)通過指定不同的分析對(duì)象控制.第三個(gè)參數(shù)用于確定是否覆蓋原有索引的.
第二步就是利用這個(gè)writer往索引中添加文件.具體后面再說.
第三步進(jìn)行優(yōu)化.
第四步關(guān)閉writer.
下面具體看看第二步:
  public static void IndexDirectory(IndexWriter writer, FileInfo file)
         
{
              if (Directory.Exists(file.FullName))
              
{
                   String[] files = Directory.GetFileSystemEntries(file.FullName);
                   // an IO error could occur
                   if (files != null)
                   
{
                       for (int i = 0; i < files.Length; i++)
                       
{
                            IndexDirectory(writer, new FileInfo(files[i]));  //這里是一個(gè)遞歸
                       }
                   }
              }
              else if (file.Extension == ".txt")
              
{
                   IndexFile(file, writer);
              }
         }
         private static void IndexFile(FileInfo file, IndexWriter writer)
         
{
              Console.Out.WriteLine("adding " + file);
              try
              
{
                   Document doc = new Document();
                   doc.Add(Field.Keyword("filename", file.FullName));
                   doc.Add(Field.Text("contents", new StreamReader(file.FullName)));
                   writer.AddDocument(doc);
              }
              catch (FileNotFoundException fnfe)
              
{
              }
     }
主要就是兩個(gè)函數(shù)一個(gè)用于處理文件夾(不是為文件夾建立索引),一個(gè)用于真正為文件建立索引.
因此主要集中看一下IndexFile這個(gè)方法.首先建立Document對(duì)象,然后為Document對(duì)象添加一些屬性Field.你可以把Document對(duì)象看成是虛擬文件,將來(lái)將從此獲取信息.而Field則看成是描述此虛擬文件的元數(shù)據(jù)(metadata).
其中Field包括四個(gè)類型:
Keywork
該類型的數(shù)據(jù)將不被分析,而會(huì)被索引并保存保存在索引中.
UnIndexed
該類型的數(shù)據(jù)不會(huì)被分析也不會(huì)被索引,但是會(huì)保存在索引.
UnStored
和UnIndexed剛好相反,被分析被索引,但是不被保存.
Text
和UnStrored類似.如果值的類型為string還會(huì)被保存.如果值的類型為Reader就不會(huì)被保存和UnStored一樣.
最后將每一個(gè)Document添加到索引當(dāng)中.
需要注意的是索引不僅可以建立在文件系統(tǒng)上,也可以建立在內(nèi)存中.
例如
IndexWriter writer = new IndexWriter("index", new StandardAnalyzer(), true);
在第一個(gè)參數(shù)不是指定文件夾的名字而是使用Directory對(duì)象,并使用它的子類RAMDirectory,就可以將索引建立在內(nèi)存當(dāng)中.
2.       對(duì)索引進(jìn)行搜索
IndexSearcher indexSearcher= new IndexSearcher(indexDir);
Query query = QueryParser.Parse(queryString, "contents",new StandardAnalyzer());
Hits hits = indexSearcher.Search(query);
第一步利用IndexSearcher打開索引文件用于后面搜索,其中的參數(shù)是索引文件的路徑.
第二步使用QueryParser將可讀性較好的查詢語(yǔ)句(比如查詢的詞lucene ,以及一些高級(jí)方式lucene AND .net)轉(zhuǎn)化為L(zhǎng)ucene內(nèi)部使用的查詢對(duì)象.
第三步執(zhí)行搜索.并將結(jié)果返回到hits集合.需要注意的是Lucene并不是一次將所有的結(jié)果放入hits中而是采取一次放一部分的方式.出于空間考慮.
至此,本文演示了如何從一個(gè)文件夾下的所有txt文件中查找特定的詞。并圍繞該個(gè)實(shí)例介紹了lucene.net的索引的建立以及如何針對(duì)索引進(jìn)行搜索.最后給出源代碼供大家學(xué)習(xí).
本站僅提供存儲(chǔ)服務(wù),所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊舉報(bào)。
打開APP,閱讀全文并永久保存 查看更多類似文章
猜你喜歡
類似文章
Apache Lucene與Lucene.Net——全文檢索服務(wù)器
.索引的建立和優(yōu)化
lucene爬數(shù)據(jù)庫(kù)中的數(shù)據(jù)無(wú)非也是查詢數(shù)據(jù)。所有我們用lucene搜索數(shù)據(jù)主要有下面幾個(gè)步驟
Lucene
跟我一起云計(jì)算(4)lucene
[Lucene.Net] 基本用法
更多類似文章 >>
生活服務(wù)
分享 收藏 導(dǎo)長(zhǎng)圖 關(guān)注 下載文章
綁定賬號(hào)成功
后續(xù)可登錄賬號(hào)暢享VIP特權(quán)!
如果VIP功能使用有故障,
可點(diǎn)擊這里聯(lián)系客服!

聯(lián)系客服