博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
使用BeetleX.ESDoc构建文档搜索功能
阅读量:4035 次
发布时间:2019-05-24

本文共 3401 字,大约阅读时间需要 11 分钟。

        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; }        //分类ID        public 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
Delete(string id)//添加文档Task Put(Document doc)//获取标签汇总Task
AggsTag(int top = 60)//获取年汇总Task AggsYear(int top = 60)//获取年-月汇总Task AggsMonth(int top = 60)//搜索Task
, 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

转载地址:http://mfudi.baihongyu.com/

你可能感兴趣的文章
flex中设置Label标签文字的自动换行
查看>>
Flex 中的元数据标签
查看>>
flex4 中创建自定义弹出窗口
查看>>
01Java基础语法-11. 数据类型之间的转换
查看>>
01Java基础语法-13. if分支语句的灵活使用
查看>>
01Java基础语法-15.for循环结构
查看>>
01Java基础语法-16. while循环结构
查看>>
01Java基础语法-17. do..while循环结构
查看>>
01Java基础语法-18. 各种循环语句的区别和应用场景
查看>>
01Java基础语法-19. 循环跳转控制语句
查看>>
Django框架全面讲解 -- Form
查看>>
socket,accept函数解析
查看>>
今日互联网关注(写在清明节后):每天都有值得关注的大变化
查看>>
”舍得“大法:把自己的优点当缺点倒出去
查看>>
[今日关注]鼓吹“互联网泡沫,到底为了什么”
查看>>
[互联网学习]如何提高网站的GooglePR值
查看>>
[关注大学生]求职不可不知——怎样的大学生不受欢迎
查看>>
[关注大学生]读“贫困大学生的自白”
查看>>
[互联网关注]李开复教大学生回答如何学好编程
查看>>
[关注大学生]李开复给中国计算机系大学生的7点建议
查看>>