校园春色亚洲色图_亚洲视频分类_中文字幕精品一区二区精品_麻豆一区区三区四区产品精品蜜桃

主頁 > 知識庫 > 基于ASP.NET的lucene.net全文搜索實現步驟

基于ASP.NET的lucene.net全文搜索實現步驟

熱門標簽:蘋果手機凱立德地圖標注 電話機器人軟件銷售工作 百度ai地圖標注 同安公安400電話怎么申請流程 玉林市機器人外呼系統哪家好 預測式外呼系統使用說明 申請400電話手續 合肥電銷外呼系統哪家公司做的好 南陽外呼系統定制化

在做項目的時候,需求添加全文搜索,選擇了lucene.net方向,調研了一下,基本實現了需求,現在將它分享給大家。理解不深請多多包涵。

在完成需求的時候,查看的大量的資料,本文不介紹詳細的lucene.net工程建立,只介紹如何對文檔進行全文搜索。對于如何建立lucene.net的工程請大家訪問

使用lucene.net搜索分為兩個部分,首先是創建索引,創建文本內容的索引,其次是根據創建的索引進行搜索。那么如何對文檔進行索引呢,主要是對文檔的內容進行索引,關鍵是提取出文檔的內容,按照常規實現,由簡到難,提取txt格式的文本相對比較簡單,如果實現了提取txt文本,接下來就容易多了,萬丈高樓平地起,這就是地基。

1.首先創建ASP.NET頁面。

這是一個極其簡單的頁面,創建頁面之后,雙擊各個按鈕生成相應的點擊事件,在相應的點擊事件中實現程序設計。

2.實現索引部分。

前面已經說到了,索引主要是根據文本內容建立索引,所以要提取文本內容。創建提取txt格式文檔文本內容的函數。

復制代碼 代碼如下:
 
//提取txt文件
public static string FileReaderAll(FileInfo fileName)
{
//讀取文本內容,并且默認編碼格式,防止出現亂碼
StreamReader reader = new StreamReader(fileName.FullName, System.Text.Encoding.Default);
string line = "";
string temp = "";
//循環讀取文本內容
while ((line = reader.ReadLine()) != null)
{
temp += line;
}
reader.Close();
//返回字符串,用于lucene.net生成索引
return temp;
}

文本內容已經提取出來了,接下來要根據提取的內容建立索引
復制代碼 代碼如下:
 
protected void Button2_Click(object sender, EventArgs e)
{
//判斷存放文本的文件夾是否存在
if (!System.IO.Directory.Exists(filesDirectory))
{
Response.Write("script>alert('指定的目錄不存在');/script>");
return;
}
//讀取文件夾內容
DirectoryInfo dirInfo = new DirectoryInfo(filesDirectory);
FileInfo[] files = dirInfo.GetFiles("*.*");
//文件夾判空
if (files.Count() == 0)
{
Response.Write("script>alert('Files目錄下沒有文件');/script>");
return;
}
//判斷存放索引的文件夾是否存在,不存在創建
if (!System.IO.Directory.Exists(indexDirectory))
{
System.IO.Directory.CreateDirectory(indexDirectory);
}
//創建索引
IndexWriter writer = new IndexWriter(FSDirectory.Open(new DirectoryInfo(indexDirectory)),
analyzer, true, IndexWriter.MaxFieldLength.LIMITED);

for (int i = 0; i files.Count(); i++)
{
string str = "";
FileInfo fileInfo = files[i];
//判斷文件格式,為以后其他文件格式做準備
if (fileInfo.FullName.EndsWith(".txt") || fileInfo.FullName.EndsWith(".xml"))
{
//獲取文本
str = FileReaderAll(fileInfo);
}
Lucene.Net.Documents.Document doc = new Lucene.Net.Documents.Document();
doc.Add(new Lucene.Net.Documents.Field("FileName", fileInfo.Name, Lucene.Net.Documents.Field.Store.YES, Lucene.Net.Documents.Field.Index.ANALYZED));
//根據文本生成索引
doc.Add(new Lucene.Net.Documents.Field("Content", str, Lucene.Net.Documents.Field.Store.YES, Lucene.Net.Documents.Field.Index.ANALYZED));
doc.Add(new Lucene.Net.Documents.Field("Path", fileInfo.FullName, Lucene.Net.Documents.Field.Store.YES, Lucene.Net.Documents.Field.Index.NO));
//添加生成的索引
writer.AddDocument(doc);
writer.Optimize();
}
writer.Dispose();
Response.Write("script>alert('索引創建成功');/script>");
}

3.索引創建完了,接下來就是搜索,搜索只要按照固定的格式書寫不會出現錯誤。
復制代碼 代碼如下:
 
protected void Button1_Click(object sender, EventArgs e)
{
//獲取關鍵字
string keyword = TextBox1.Text.Trim();
int num = 10;
//關鍵字判空
if (string.IsNullOrEmpty(keyword))
{
Response.Write("script>alert('請輸入要查找的關鍵字');/script>");
return;
}

IndexReader reader = null;
IndexSearcher searcher = null;
try
{
reader = IndexReader.Open(FSDirectory.Open(new DirectoryInfo(indexDirectory)), true);
searcher = new IndexSearcher(reader);
//創建查詢
PerFieldAnalyzerWrapper wrapper = new PerFieldAnalyzerWrapper(analyzer);
wrapper.AddAnalyzer("FileName", analyzer);
wrapper.AddAnalyzer("Path", analyzer);
wrapper.AddAnalyzer("Content", analyzer);
string[] fields = { "FileName", "Path", "Content" };

QueryParser parser = new MultiFieldQueryParser(Lucene.Net.Util.Version.LUCENE_30, fields, wrapper);
//根據關鍵字查詢
Query query = parser.Parse(keyword);

TopScoreDocCollector collector = TopScoreDocCollector.Create(num, true);

searcher.Search(query, collector);
//這里會根據權重排名查詢順序
var hits = collector.TopDocs().ScoreDocs;

int numTotalHits = collector.TotalHits;

//以后就可以對獲取到的collector數據進行操作
for (int i = 0; i hits.Count(); i++)
{
var hit = hits[i];
Lucene.Net.Documents.Document doc = searcher.Doc(hit.Doc);
Lucene.Net.Documents.Field fileNameField = doc.GetField("FileName");
Lucene.Net.Documents.Field pathField = doc.GetField("Path");
Lucene.Net.Documents.Field contentField = doc.GetField("Content");
//在頁面循環輸出表格
strTable.Append("tr>");
strTable.Append("td>" + fileNameField.StringValue + "/td>");
strTable.Append("/tr>");
strTable.Append("tr>");
strTable.Append("td>" + pathField.StringValue + "/td>");
strTable.Append("/tr>");
strTable.Append("tr>");
strTable.Append("td>" + contentField.StringValue.Substring(0, 300) + "/td>");
strTable.Append("/tr>");
}
}
finally
{
if (searcher != null)
searcher.Dispose();

if (reader != null)
reader.Dispose();
}
}

現在整個lucene.net搜索全文的過程就建立完了,現在可以搜索txt格式的文件,搜索其他格式的文件在以后添加,主要核心思想就是提取各個不同格式文件的文本內容。

顯示效果如下:

在以后的博文里繼續接受搜索其他格式的文檔。

您可能感興趣的文章:
  • Lucene.Net實現搜索結果分類統計功能(中小型網站)
  • Java實現lucene搜索功能的方法(推薦)
  • 基于Lucene的Java搜索服務器Elasticsearch安裝使用教程
  • 使用Java的Lucene搜索工具對檢索結果進行分組和分頁
  • 使用Lucene.NET實現站內搜索
  • 使用Lucene實現一個簡單的布爾搜索功能

標簽:南京 嘉興 南昌 南京 海南 淄博 臺州 揚州

巨人網絡通訊聲明:本文標題《基于ASP.NET的lucene.net全文搜索實現步驟》,本文關鍵詞  基于,ASP.NET,的,lucene.net,;如發現本文內容存在版權問題,煩請提供相關信息告之我們,我們將及時溝通與處理。本站內容系統采集于網絡,涉及言論、版權與本站無關。
  • 相關文章
  • 下面列出與本文章《基于ASP.NET的lucene.net全文搜索實現步驟》相關的同類信息!
  • 本頁收集關于基于ASP.NET的lucene.net全文搜索實現步驟的相關信息資訊供網民參考!
  • 推薦文章
    校园春色亚洲色图_亚洲视频分类_中文字幕精品一区二区精品_麻豆一区区三区四区产品精品蜜桃
    久久在线观看免费| 麻豆国产欧美日韩综合精品二区| 亚洲一区在线观看免费观看电影高清| 久久成人久久鬼色| 日韩欧美高清一区| 日本最新不卡在线| 日韩视频在线永久播放| 日韩一区欧美二区| 2020国产精品久久精品美国| 亚洲人精品午夜| eeuss鲁一区二区三区| 国产拍揄自揄精品视频麻豆| 精品在线免费观看| 国产日韩高清在线| 97se亚洲国产综合自在线 | 91麻豆国产福利在线观看| 日本一区二区免费在线| caoporen国产精品视频| 亚洲欧美色图小说| 4438亚洲最大| 国产黄色91视频| 依依成人精品视频| 欧美一区二区三区免费大片| 精品无人码麻豆乱码1区2区 | 欧美亚日韩国产aⅴ精品中极品| 亚洲区小说区图片区qvod| 欧美日本不卡视频| 国产精品一区二区在线观看不卡| 综合激情网...| 日韩一区二区三区视频在线 | 韩国一区二区在线观看| 一区二区三区四区精品在线视频| 欧美日韩不卡在线| 成人精品视频一区二区三区| 亚洲午夜电影网| 成人欧美一区二区三区| 精品成a人在线观看| 欧美日韩国产成人在线91| 成人高清视频在线| 久久国产精品第一页| 亚洲一区二区成人在线观看| 欧美国产欧美综合| 久久久久久一二三区| 欧美精品免费视频| 91久久香蕉国产日韩欧美9色| 国产精品一级片在线观看| 日韩高清在线观看| 伊人开心综合网| 亚洲人成网站影音先锋播放| 久久色在线观看| 欧美成va人片在线观看| 欧美日韩国产电影| 欧美三区在线视频| 欧美一级日韩不卡播放免费| 91精品国产综合久久久久久久| 在线日韩av片| 欧美浪妇xxxx高跟鞋交| 日本二三区不卡| 欧美浪妇xxxx高跟鞋交| 日韩一区二区精品在线观看| 7777精品久久久大香线蕉 | 精品久久久久久最新网址| 欧美日韩www| 日韩精品中文字幕一区二区三区 | 欧美精品久久久久久久多人混战 | 精品国产免费人成在线观看| 欧美一级日韩一级| 欧美激情在线看| 一区二区在线免费观看| 日一区二区三区| 国产精品中文字幕一区二区三区| 国产一区二区中文字幕| 91美女视频网站| 欧美一区2区视频在线观看| 久久久91精品国产一区二区精品 | 94-欧美-setu| 91精品久久久久久蜜臀| 中文一区一区三区高中清不卡| 中文字幕一区二区三区蜜月| 舔着乳尖日韩一区| 国产福利91精品一区二区三区| 色一情一伦一子一伦一区| 宅男噜噜噜66一区二区66| 国产亚洲成av人在线观看导航 | 韩国中文字幕2020精品| 在线看日本不卡| 国产精品久久久久久久久免费相片| 一区二区三区国产精品| 成人黄色一级视频| 精品国产亚洲在线| 亚洲动漫第一页| 波多野结衣91| 国产精品丝袜91| 国产91丝袜在线18| 欧美变态tickling挠脚心| 亚洲va韩国va欧美va精品| 99精品国产热久久91蜜凸| 国产精品黄色在线观看| 国产一区二区三区美女| 日韩美女视频在线| 麻豆精品一二三| 日韩精品一区二区三区老鸭窝| 亚洲精品乱码久久久久久久久| 99re亚洲国产精品| 亚洲欧洲综合另类| 欧美视频一区在线| 男女激情视频一区| 成人欧美一区二区三区视频网页| 日韩午夜在线观看视频| 国产日韩欧美综合在线| 婷婷久久综合九色国产成人| 色屁屁一区二区| 亚洲成人7777| 91精品国产综合久久久久久久久久| 日韩av电影免费观看高清完整版| 欧洲一区二区av| 美女在线视频一区| 日韩三级视频中文字幕| 韩国成人福利片在线播放| 久久久精品人体av艺术| 色综合色综合色综合| 亚洲va国产va欧美va观看| 欧美大白屁股肥臀xxxxxx| 国产精品99精品久久免费| 亚洲午夜久久久久久久久电影院 | 亚洲高清久久久| 欧美va亚洲va| 91成人在线免费观看| 久久www免费人成看片高清| 中文字幕中文字幕一区| 日韩美女在线视频| 色综合久久久久| 美美哒免费高清在线观看视频一区二区| 欧美电视剧在线看免费| 99精品视频在线观看| 奇米亚洲午夜久久精品| 亚洲日本丝袜连裤袜办公室| 欧美电影免费观看高清完整版在线| 欧美亚州韩日在线看免费版国语版 | 久久99最新地址| 免费观看日韩av| 日韩av电影免费观看高清完整版| 亚洲私人黄色宅男| 国产欧美日韩激情| 久久这里只有精品视频网| 日韩欧美www| 日韩精品一区二区在线观看| 91麻豆精品国产91久久久更新时间| 成人激情小说乱人伦| 成人丝袜高跟foot| 成人97人人超碰人人99| 国产成人在线观看| 国产麻豆精品theporn| 国产精品91xxx| av亚洲精华国产精华精| 色婷婷国产精品| 欧美影院精品一区| 欧美日韩视频第一区| 欧美疯狂做受xxxx富婆| xfplay精品久久| 国产精品丝袜久久久久久app| 中文字幕在线观看一区二区| 中文字幕在线播放不卡一区| 亚洲综合久久久| 日本特黄久久久高潮| 国产伦精品一区二区三区免费迷| 国产在线精品一区二区夜色 | 欧美日韩国产色站一区二区三区| 欧美在线视频你懂得| 91精品国产一区二区人妖| 精品久久人人做人人爱| 中文字幕中文字幕一区二区| 亚洲国产成人精品视频| 国产一区中文字幕| 欧美性猛交xxxxxx富婆| 久久影音资源网| 亚洲国产毛片aaaaa无费看| 美女性感视频久久| 欧美性猛交xxxx乱大交退制版| 精品国产凹凸成av人导航| 亚洲成人资源网| 99久久伊人久久99| 精品国产第一区二区三区观看体验| 亚洲丝袜精品丝袜在线| 久久精品二区亚洲w码| 欧美伊人久久久久久午夜久久久久| 精品国产91乱码一区二区三区| 亚洲免费观看高清完整版在线| 国产一区在线观看麻豆| 欧美日韩亚洲另类| 亚洲一区二区三区不卡国产欧美| 国产一区三区三区| 精品国产一二三| 国产真实乱子伦精品视频| 亚洲欧洲综合另类| av电影一区二区| 中文字幕一区二区三| 成人精品一区二区三区中文字幕| 精品国产a毛片| 激情综合五月天|