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构建文档搜索功能相关推荐

  1. 国内外主流文档搜索网站

    当今社会,搜索引擎已经成为我们从网络获取知识的主要通道,专门面向文献文档资料的搜索网站让我们更轻易的找到我们所需的论文.报告.申请书等等资 料,下面是一些国内外主要的文档搜索引擎. 国内文档搜索网站: ...

  2. docsify 构建文档网站之定制功能(全网最全)

    作者: wugenqiang 学习笔记:https://notebook.js.org/ 微信公众号:码客 E 分享(ID:enjoytoshare) 文档后续更新地址:docsify 构建文档网站 ...

  3. 使用vue+el构建表格_如何使用Vue和VuePress构建文档系统

    使用vue+el构建表格 介绍 (Introduction) Good documentation is a critical part of a successful project, but a ...

  4. 百度文档搜索与Google文档搜索的简单比较

    很多有具有参考价值的资料,比如学生写论文报告,老师做课件,找工作准备简历都需要参考其他人的成果.在互联网上,这类资料一般不是普通的html网页,而是以Word.ppt(s).Excel.pdf等格式存 ...

  5. SwiftUI 使用Apple Visionkit构建文档扫描仪

    实战需求 SwiftUI 使用Apple Visionkit构建文档扫描仪 本文价值与收获 看完本文后,您将能够作出下面的界面 核心功能 扫描一个或多个文件 共享扫描的文档 如果不需要文件,则删除 基 ...

  6. 【项目】好用快搜文档搜索工具

    文章目录 一.项目分析 1.项目调研 2.项目需求 3.开发环境 4.项目知识框架 5.项目实现基本理论 二.项目设计 整体框架设计 代码框架设计 三.项目实现 1.系统工具模块 目录遍历 2.数据库 ...

  7. PDF文档搜索工具:PDF Search Mac版

    PDF Search Mac版是一款运行在Mac平台上的PDF文档搜索工具,PDF Search for mac可以帮助用户快速搜索PDF文档,以便用户在数千个PDF文档之间即时查找最相关的页面,另外 ...

  8. Word文档 替换功能

    Word文档 替换功能 Word文档 替换功能 1.打开你的文档ctrl+H快捷键,呼出此页面(查找和替换) 2.点击替换 在查找内容里面选择标签内容,也就是你要替换的内容 3.查找内容那里要有内容才 ...

  9. BBdoc文档搜索软件安装使用说明

    BBdoc文档搜索工具免费下载免费使用. BBdoc主要功能 1.支持按照文档类型搜索,目前支持word.pdf.Excel.压缩文件.csv.wps.txt等,针对图片.音视频.html等文件搜索会 ...

最新文章

  1. Python 库升级问题-module ‘requests.exceptions‘ has no attribute ‘ReadTimeout‘原因及解决办法
  2. 优秀国外测试网站集合
  3. ubuntu 搜狗安装搜狗输入法(fcitx)亲测有用
  4. 为数据访问代码编写测试–不测试框架
  5. AngularJS中的表达式
  6. 小米笔记本系统win10家庭版升级为企业版(专业版)
  7. Python语言程序设计(嵩天老师版)第二周代码解析
  8. 嵌入式入门必去的网站 —— 介绍的非常详细
  9. 大气压力换算公式_常用压力单位换算表
  10. 计算机基础文化知识板书,计算机文化基础考试
  11. 华为认证HCIA的方向选择
  12. php对接打码平台,好用的打码平台推荐
  13. 搜索网页显示找不到服务器,显示:DNS 查找失败,因此找不到 x 的服务器。DNS 是将网站名称解析为互联网地址的网络服务...
  14. ResNet中残差块的理解(附代码)
  15. Python之urlparse模块
  16. 20192132055 李欣桐 第三次作业
  17. java获取MP3文件的id3信息(包括封面图,歌词,艺术家,标题等)
  18. DSP开发-C语言环境
  19. css滚动条外层轨道颜色不对,滚动条滚动时显示,不滚动时隐藏
  20. windows 通过cmd窗口ssh命令使用密码远程连接服务器(Ubuntu)

热门文章

  1. 环境部署(九):linux下安装python+chrome+Xvfb
  2. Python 项目实践三(Web应用程序)第四篇
  3. IE6下z-index犯癫不起作用bug的初步研究
  4. CSS hack:区分IE6 IE7 Firefox
  5. Teams Bot如何做全球化
  6. 让动画每次重复前都有延迟
  7. mysql 不要统计null_浅谈为什么Mysql数据库尽量避免NULL
  8. powershell实现设置程序相关性脚本
  9. chrome插件网站
  10. 翻译:用户变量(User-Defined Variable)(已提交到MariaDB官方手册)