js中的正则表达式 使用Docker和Elasticsearch搭建全文本搜索引

电脑杂谈  发布时间:2018-02-22 10:22:50  来源:网络整理

js正则表达式g_js中的正则表达式_js正则表达式电话

原标题:使用Docker和Elasticsearch搭建全文本搜索引擎应用

给应用添加快速、灵活的全文本搜索对谁都不是一件容易的事情。许多主流,如PostgreSQL和MongoDB,受限于查询和索引结构,只提供基础文本搜索能力。为了提供高效全文本搜索一般都需要一个独立的。Elasticsearch正是这样一个能够提供灵活性和快速全文本搜索能力的开源。

本文采用Docker来设置依赖环境。Docker是目前最常见的容器化引擎,Uber、Spotify、ADP和Paypal都是用这个技术,它的优势在于与操作系统无关,可以运行在Windows、macOS和Linux之上——写操作指南很容易。如果从来没有用过Docker也没问题,本文会详细提供配置文件。

本文也分别采用Node.js采(用Koa框架)和Vue.js创建搜索API和前端Web应用。

1. 什么是Elasticsearch

现代应用中全文本检索是高请求负载的应用。搜索功能也是比较困难完成的功能(许多大众网站都有subpar功能,但不是返回很慢就是返回结果不准确),大部分原因是因为底层:许多标准关系型只能提供基本字符串匹配功能,而对CONTAINS或者LIKE SQL查询只能提供有限支持。

而本文提供的搜索应用能够提供:

快速:查询结果应该实时返回,提高用户体验。

灵活:根据不同数据和使用场景,可以调整搜索过程。

最佳建议:对于输入错误,返回最可能的结果。js中的正则表达式

全文本:除了搜索关键词和标签之外,希望能够搜索到所有匹配文本。

实现以上要求的搜索应用,最好采用一个为全文本检索优化的,这也是本文采用Elasticsearch的原因。Elasticsearch是一个用Java开发的,开源的内存,最开始是包含在Apache Lucene库中。以下是一些官方给出的Elasticsearch使用场景:

Wikipedia使用Elasticsearch提供全文检索,提供高亮显示、search-as-you-type和did-you-mean建议等功能。

Guardian使用Elasticsearch将访问者社交数据整合反馈给作者。

Stack Overflow将位置信息和more-like-this功能与全文本检索整合提供相关问题和答案。

GitHub使用Elasticsearch在一千三百亿行代码中进行搜索。

Elasticsearch有什么独特之处

本质上,Elasticsearch通过使用反向索引提供快速和灵活的全文本搜索。

“索引”是一种在中提供快速查询和返回的数据结构。一般将数据域和相应表位置生成索引信息。将索引信息存放在一个可搜索的数据结构中(一般是B-Tree),可以为优化数据请求获得线性搜索响应(例如“Find the row with ID=5”)。

可以把索引看做学校图书馆卡片分类系统,只要知道书名和作者,就可以准确告诉查找内容的入口。表一般都有多个索引表,可以加速查询(例如,对name列的索引可以极大加速对特定name的查询)。

而反向索引工作原理与此完全不同。每行(或者每个文档)的内容被分拆,每个入口(本案例中是每个单词)反向指向包含它的文档。

反向索引数据结构对查询“football”位于哪个文档这种查询非常迅速。Elasticsearch使用内存优化反向索引,可以实现强大和客制化全文本检索任务。

2. 项目安装

2.0 Docker

本文使用Docker作为项目开发环境。Docker是一个容器化引擎,应用可以运行在隔离环境中,不依赖于本地操作系统和开发环境。因为可以带来巨大灵活性和客制化,许多互联网公司应用都已经运行在容器中。


本文来自电脑杂谈,转载请注明本文网址:
https://www.pc-fly.com/a/jisuanjixue/article-88488-1.html

相关阅读
    发表评论  请自觉遵守互联网相关的政策法规,严禁发布、暴力、反动的言论

    热点图片
    拼命载入中...