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

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

title: { type: 'keyword'},

author: { type: 'keyword'},

location: { type: 'integer'},

text: { type: 'text'}

}

returnclient.indices.putMapping({ index, type, body: { properties: schema } })

}

此处为书目索引定义了mapping(映射)。Elasticsearch索引类似于SQL的表或者MongoDB的connection。通过mapping我们可以定义文档每个域和数据类型。Elasticsearch是schema-less,因此技术上说不需要添加mapping,但是通过mapping可以更好控制数据处理方式。

例如,有两个关键词域,分别是“titile”和“author”,文本定为“text”域。这样定义搜索引擎会有完全不同的动作:搜索中,引擎会在text域中查找可能匹配项,而在关键词域则是精确匹配。看起来差别不大,但却对搜索行为和搜索速度有很大影响。

在文件最后输出功能和属性,可以被其它模块访问。

module. exports= {

client, index, type, checkConnection, resetIndex

}

4. 加载源数据

本文使用从Gutenberg项目(一个提供免费电子书的应用)提供的数据。包括100本经典书目,例如《80天环绕地球》、《罗密欧与朱丽叶》以及《奥德赛》等。

4.1 下载书籍数据

本文的数据可以从以下网站下载:

https://cdn.patricktriest.com/data/books.zip,之后解压到项目根目录下的books/ 子目录下。

也可以用命令行实现以上操作:

wgethttps://cdn.patricktriest.com/data/books.zip

unar books.zip

4.2 预览书籍

打开一本书,例如219-0.txt。书籍以公开访问license开始,跟着是书名、作者、发行日期、语言以及字符编码。

Title: Heart of Darkness

Author: Joseph Conrad

ReleaseDate: February 1995[EBook #219]

LastUpdated: September 7, 2016

Language: English

Charactersetencoding: UTF -8

随后是声明信息:*** START OF THIS PROJECT GUTENBERG EBOOK HEART OF DARKNESS ***,紧接着就是书的实际内容。

书的最后会发现书籍结束声明:*** END OF THIS PROJECT GUTENBERG EBOOK HEART OF DARKNESS ***,紧跟着是更加详细的书籍license。

下一步将用编程方法从书中提取元数据,并且从* * *之间将书籍内容抽取出来。

4.3 读取数据目录

本节写一段脚本读取书籍内容添加到Elasticsearch中,脚本存放在server/load_data.js 中。

首先,获得books目录下所有文件列表。

constfs = require( 'fs')

constpath = require( 'path')

constesConnection = require( './connection')

/** Clear ES index, parse and index all files from the books directory */


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

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

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