使用BeetleX.ESDoc构建文档搜索功能
??????? BeetleX.ESDoc組件是基于ElasticSearch服務(wù)的文檔搜索擴(kuò)展組件。它在BeetleX.Elasticsearch的基礎(chǔ)上包裝一些基于文檔檢索的功能和方法,可以讓你在不了解ElasticSearch API的情況下直接存儲(chǔ),刪除和搜索相關(guān)信息。
信息結(jié)構(gòu)
????????BeetleX.ESDoc定義了一個(gè)基礎(chǔ)的文檔結(jié)構(gòu)方便進(jìn)行數(shù)據(jù)存儲(chǔ),其結(jié)構(gòu)如下:
public class Document{//唯一標(biāo)識(shí)public?string?ID?{?get;?set;?}//標(biāo)題public?string?Title?{?get;?set;?}???//文本內(nèi)容public?string?Content?{?get;?set;?}//摘要public?string?Summary?{?get;?set;?}????//分類名稱public?string?Category?{?get;?set;?}//分類IDpublic?string?CategoryID?{?get;?set;?}//創(chuàng)建用戶public?string?User?{?get;?set;?}//用戶昵稱public?string?NickName?{?get;?set;?}//標(biāo)簽,多個(gè)用空格分隔public?string?Tag?{?get;?set;?}//源地址public?string?SourceUrl?{?get;?set;?}//創(chuàng)建時(shí)間public DateTime CreateTime { set; get; }}使用
????????引用BeetleX.ESDoc組件后可以定義DocumentDB對(duì)象來(lái)進(jìn)行文檔存儲(chǔ)和查詢操作。
DocumentDB db = new DocumentDB("beetlex"); await db.Init("http://192.168.2.19:9200");構(gòu)建DocumentDB對(duì)象需要帶上相關(guān)索引的名稱,在定義完成后調(diào)用Init方法來(lái)訪問(wèn)ElasticSearch服務(wù)并初始相關(guān)信息。DocumentDB是線程安全的,一般使用的時(shí)候可定義成靜態(tài)。
基礎(chǔ)方法
添加示例?
????????以下是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}");}} }查詢?
????????組件查詢文檔需要?jiǎng)?chuàng)建DocumentFilter來(lái)進(jìn)行查詢,對(duì)象包括了一些查詢條件的定義。
//指定分類 public string CategoryID { get; set; } //標(biāo)簽,可以指定多個(gè),以空格分隔 public string Tag { get; set; } //查詢內(nèi)容,如果標(biāo)題命中查詢?cè)~會(huì)提升排序的權(quán)重 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; }存儲(chǔ)數(shù)據(jù)
可以通過(guò)Head查看相關(guān)文檔索引存儲(chǔ)情況
查詢示例?
以上是查詢內(nèi)容中包括beetlex vue的數(shù)據(jù)?
可以指定時(shí)間范圍內(nèi)的查詢
Elasticsearch要求
????????ES每個(gè)版本的API都有變化,該組件是基于ES 6.5.3版本開(kāi)發(fā)并需要安裝IK分詞插件。可以通過(guò)以下地址下載已經(jīng)安裝插件的版本
鏈接:https://pan.baidu.com/s/1U8hHOqVy_a4okY2l23N0Og
提取碼:0wdx
BeetleX開(kāi)源跨平臺(tái)通訊框架(支持TLS)
輕松實(shí)現(xiàn)高性能:tcp、http、websocket、redis、rpc和網(wǎng)關(guān)等服務(wù)應(yīng)用
https://beetlex.io
如果你想了解某方面的知識(shí)或文章可以把想法發(fā)送到
henryfan@msn.com|admin@beetlex.io
總結(jié)
以上是生活随笔為你收集整理的使用BeetleX.ESDoc构建文档搜索功能的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 【Hook】postman工具的代码生成
- 下一篇: 日产汽车源码遭泄露