使用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是線程安全的,一般使用的時候可定義成靜態。
基礎方法
添加示例?
????????以下是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查看相關文檔索引存儲情況
查詢示例?
以上是查詢內容中包括beetlex vue的數據?
可以指定時間范圍內的查詢
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构建文档搜索功能的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 【Hook】postman工具的代码生成
- 下一篇: 日产汽车源码遭泄露