日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 >

使用BeetleX.ESDoc构建文档搜索功能

發布時間:2023/12/4 41 豆豆
生活随笔 收集整理的這篇文章主要介紹了 使用BeetleX.ESDoc构建文档搜索功能 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

??????? BeetleX.ESDoc組件是基于ElasticSearch服務的文檔搜索擴展組件。它在BeetleX.Elasticsearch的基礎上包裝一些基于文檔檢索的功能和方法,可以讓你在不了解ElasticSearch API的情況下直接存儲,刪除和搜索相關信息。

信息結構

????????BeetleX.ESDoc定義了一個基礎的文檔結構方便進行數據存儲,其結構如下:

public class Document{//唯一標識public?string?ID?{?get;?set;?}//標題public?string?Title?{?get;?set;?}???//文本內容public?string?Content?{?get;?set;?}//摘要public?string?Summary?{?get;?set;?}????//分類名稱public?string?Category?{?get;?set;?}//分類IDpublic?string?CategoryID?{?get;?set;?}//創建用戶public?string?User?{?get;?set;?}//用戶昵稱public?string?NickName?{?get;?set;?}//標簽,多個用空格分隔public?string?Tag?{?get;?set;?}//源地址public?string?SourceUrl?{?get;?set;?}//創建時間public DateTime CreateTime { set; get; }}

使用

????????引用BeetleX.ESDoc組件后可以定義DocumentDB對象來進行文檔存儲和查詢操作。

DocumentDB db = new DocumentDB("beetlex"); await db.Init("http://192.168.2.19:9200");

構建DocumentDB對象需要帶上相關索引的名稱,在定義完成后調用Init方法來訪問ElasticSearch服務并初始相關信息。DocumentDB是線程安全的,一般使用的時候可定義成靜態。

基礎方法

//刪除索引 Task DeleteIndex() //重新創建索引 Task ReCreateIndex() //刪除文檔 Task<bool> Delete(string id) //添加文檔 Task Put(Document doc) //獲取標簽匯總 Task<object> AggsTag(int top = 60) //獲取年匯總 Task<object> AggsYear(int top = 60) //獲取年-月匯總 Task<object> AggsMonth(int top = 60) //搜索 Task<Tuple<IList<Document>, int>> Search(DocumentFilter filter)

添加示例?

????????以下是blog.beetlex.io使用組件添加文檔的情況

public static async Task AsyncPost(DataBase.Post post, DataBase.Project project, HttpApiServer server) {try{Document doc = new Document();doc.ID = post.ID;doc.CategoryID = post.Project;doc.Content = post.Content;doc.CreateTime = post.CreateTime;doc.SourceUrl = post.SourceUrl;doc.Summary = post.Digest;doc.Category = project?.Name;doc.Tag = post.Tag;doc.Title = post.Title;doc.User = post.User;doc.NickName = post.NickName;await DB.Put(eSBlog);}catch (Exception e_){if (server.EnableLog(EventArgs.LogType.Error)){server.Log(EventArgs.LogType.Error, null, $"Async post to elasticsearch error {e_.Message}");}} }

查詢?

????????組件查詢文檔需要創建DocumentFilter來進行查詢,對象包括了一些查詢條件的定義。

//指定分類 public string CategoryID { get; set; } //標簽,可以指定多個,以空格分隔 public string Tag { get; set; } //查詢內容,如果標題命中查詢詞會提升排序的權重 public string Query { get; set; }public int Page { get; set; }public int Size { get; set; }public DateTime? StartTime { get; set; }public DateTime? EndTime { get; set; }

存儲數據

可以通過Head查看相關文檔索引存儲情況

查詢示例?

DocumentDB db = new DocumentDB("beetlex"); await db.Init("http://192.168.2.19:9200"); var filter = db.CreateFilter(0); filter.Query = "beetlex vue"; var result = await filter.Search(); foreach (var item in result.Item1) {Print(item); }

以上是查詢內容中包括beetlex vue的數據?

可以指定時間范圍內的查詢

DocumentDB db = new DocumentDB("beetlex"); await db.Init("http://192.168.2.19:9200"); var filter = db.CreateFilter(0); filter.Query = "beetlex vue"; filter.StartTime = DateTime.Parse("2020-12-1"); var result = await filter.Search(); foreach (var item in result.Item1) {Print(item); }

Elasticsearch要求

????????ES每個版本的API都有變化,該組件是基于ES 6.5.3版本開發并需要安裝IK分詞插件。可以通過以下地址下載已經安裝插件的版本

鏈接:https://pan.baidu.com/s/1U8hHOqVy_a4okY2l23N0Og

提取碼:0wdx

BeetleX

開源跨平臺通訊框架(支持TLS)
輕松實現高性能:tcp、http、websocket、redis、rpc和網關等服務應用

https://beetlex.io

如果你想了解某方面的知識或文章可以把想法發送到

henryfan@msn.com|admin@beetlex.io

總結

以上是生活随笔為你收集整理的使用BeetleX.ESDoc构建文档搜索功能的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。