elastic 索引与搜索模块

7人阅读 评论(0) 收藏 举报
分类:
倒排索引

lucnce采用倒排索引,例如:对
{“_id”:1,”name”:”欧阳红叶”,”age”:18}
{“_id”:2,”name”:”欧阳晴明”,”age”:17}
两条数据,会建立如下索引:

word index
欧阳 1[1],2[1],0,0 #当前词在id=1的doc中出现1次,offset为0,在id=2的doc中出现一次,offset为0
红叶 1[1],0 #当前词在id=1的doc中出现1次,offset为0
晴明 2[1],0 #当前词在id=2的doc中出现1次,offset为0
索引模块

首先对文本进行索引分析,然后建立索引。
1. 索引分析模块Analyzer:

https://www.elastic.co/guide/en/elasticsearch/reference/5.x/analysis.html

1)分解器(Tokenizer) :

英文分解器会把中文分解成一个一个的字,安装中文分解器就可以了,例如对于文本“英文分解器”:
英文分解器分解后:“英”、“文”、“分”、“解”、“器”,
中文分解器分解后 “英文”、“分解”、“分解器”

2)词元过滤器(token filters)
- 停用词过滤器:
英文中对于分解器分解出的 the 、a 、is 等这些词,不对其建索引
中文对于分解器分解出的 的、了、吗 等这些词,不对其建索引

  • 大写转小写过滤器:
    如 对于 ElasticSearch ,分解器分解出”Elastic” “Search” 两个词,将转成”elastic” “search”

  • 自定义词库过滤器?:
    对于一些非常规的,比如某些专业领域的词汇如石油行业的“构造井”,分词器可能不能准确的分解出,或者流行词如“蓝瘦香菇”等。这时可以自定义词库。
    (1)在IK的cofig/custom目录下创建shiyou_words.dic文件,每个自定义的词单独一行
    (2)在ik的配置文件config/IKAnalyzer.cfg.xml中做如下配置:

<entry key="ext_dic">custom/shiyou_words.dic;custom/liuxingci.dic</entry>
  1. 索引建立模块Indexer
    1)在建立索引过程中,分析处理过的文档将被加入到索引列表。事实上,Lucene为此仅提供了一个非常简单的API,而后自行内生地完成了此过程的所有功能
索引和搜索


搜索过程同样首先要对搜索的关键词做分析,同索引分析一样,要经过tokenizer和多个token filters。
然后再通过解析后的tokens进行搜索。

热更新IK词库(不必重启es服务)

(1)只需将plugins/IK/config/ik/IKAnalyzer.cfg.xml``中的配置项xxx的值,配置为一个动态页面
(2) 将词库文件放在http服务器上,例如tomcat服务器:
tomcat/webapps/ROOT“目录下,创建自定义词库文件hot.dic,然后将(1)中配置项的值改为“`http://hostname:8080/hot.dic即可。

查看评论

elasticsearch索引过程

下一个需要被解决的问题是怎样在保留不变性的前提下实现倒排索引的更新? 答案是: 用更多的索引。 通过增加新的补充索引来反映新近的修改,而不是直接重写整个倒排索引。每一个倒排索引都会被轮流查询...
  • gongpulin
  • gongpulin
  • 2017-12-10 18:15:51
  • 69

ElasticSearch-多索引检索与批量操作

ElasticSearch的速度已经很快了,但甚至能更快。将多个请求合并成一个,避免单独处理每个请求话费的网络延时和开销。如果你需要从ElasticSearch中检索很多文档,那么使用multi_ge...
  • y472360651
  • y472360651
  • 2017-10-19 17:18:59
  • 1184

elasticsearch概念之索引、搜索和聚合

环境elasticsearch:5.2.2索引 —即:数据库我自己理解:存储数据的行为就叫做索引。通俗点就是插入数据。官网翻译的解释:Elasticsearch中存储数据的行为就叫做索引官网给出的和关...
  • u013066244
  • u013066244
  • 2017-03-06 18:06:08
  • 615

关于基于elasticsearch的全文检索 建立索引 查询

1、概述 Elasticsearch是一个分布式文档的储存引擎,它可以实时的储存并检索发杂的数据结构(其实是一个序列化的json文档),一旦数据被储存在es服务器中,我们可以在集群的任何一个节点进行搜...
  • wsz19940227
  • wsz19940227
  • 2017-03-02 14:20:04
  • 155

Elasticsearch之四种查询类型和搜索原理

Elasticsearch Client发送搜索请求,某个索引库,一般默认是5个分片(shard)。   它返回的时候,由各个分片汇总结果回来。                 ...
  • wangyunpeng0319
  • wangyunpeng0319
  • 2017-10-12 18:43:57
  • 1641

golang基础- ElasticSearch搜索引擎、kibana可视化工具、向ES输出数据

安装ElasticSearch 安装kibana 向es输出数据安装ElasticSearch1、下载ES,下载地:https://www.elastic.co/downloads 2、修改conf...
  • u013210620
  • u013210620
  • 2017-11-27 18:36:28
  • 956

搜索模块思路及代码说明

利用Lucene制作搜索模块的思路及代码说明 搜索引擎主要分为两大功能:  一.  创建索引                                                      ...
  • ThinkerAndy
  • ThinkerAndy
  • 2008-02-13 14:08:00
  • 4262

Elasticsearch 架构以及源码概览

转自:http://jolestar.com/elasticsearch-architecture/#rd?sukey=3997c0719f1515201d882aeeb35124573c66a29f...
  • likui1314159
  • likui1314159
  • 2016-07-24 10:38:05
  • 2289

laravel使用ElasticSearch进行搜索

1.安装elasticsearch和ik插件 ①elasticsearch集成包(包括ik中文插件)安装地址:https://github.com/medcl/elasticsearch-rtf ②测...
  • lingchen__
  • lingchen__
  • 2017-09-07 17:49:09
  • 2903

Elasticsearch(二)elasticsearch索引数据与简单检索GET一个文档

本文参考elasticsearch权威指南。 是一个学习笔记,按照里面的示例进行学习,在此记录跟踪。与elasticsearch交互的两种方式+简单索引和检索一个文档...
  • cc907566076
  • cc907566076
  • 2017-11-13 16:55:16
  • 183
    个人资料
    等级:
    访问量: 1万+
    积分: 428
    排名: 11万+