快速基于elasticsearch搭建一个中文文本检索系统

技术宅 rainforest 2年前 (2018-08-13) 577次浏览 0个评论

elasticsearch是一个开源的文本检索系统,调研文本检索时可以基于elasticsearch快速搭建一个检索系统。

 

1、安装好jdk,可以用jumbo安装

2、下载配置好的elasticsearch包:elasticsearch-2.3.5.tar

这个安装包里面已经配置好了分词插件,可以很简单的支持中文检索

3、解压包,并调用start.sh脚本启动服务,默认监听的端口是8200

4、建索引

curl -X PUT host:8200/shop -d'{
“settings”:{
“number_of_shards”:1,
“number_of_replicas”:0
},
“mappings”:{
“type1”:{
“_all”:{“enabled”:false},
“properties”:{
“title”:{“type”:”string”,”analyzer”:”index_ansj”,”search_analyzer”:”query_ansj”},
“hash”:{“type”:”integer”}
}
}
}
}’

这里建了两个索引,title进行切词索引,hash进行非切词索引

4、灌数据

我们这里采用python来灌数据

#!/usr/bin/env python
#encoding:utf8

import sys
import traceback
from datetime import datetime
from elasticsearch import Elasticsearch
from cityhash import CityHash64

 

if __name__ == ‘__main__’:
es = Elasticsearch(“gzns-ps-201608-m22-nwise26.gzns.baidu.com:8200”)
for line in sys.stdin:
try:
line = line.strip(“\r\n\t”)
sps = line.split(“\t”)

if len(sps) != 2:
print >>sys.stderr, “bad line [%s]” % line
continue

hs = int(sps[0])
title = sps[1]

es.index(index = “shop”,
doc_type = “shop”,
id = CityHash64(title),
body = {“title” : title, “timestamp”:datetime.now(), “hash” : hs})
except:
traceback.print_exc(file = sys.stderr)
continue

 

5、检索

链接

或者参考最新的elasticsearch权威指南

 

参考文档:

1、https://www.cnblogs.com/yxpblog/p/5141738.html

2、https://www.2cto.com/net/201706/649808.html


乐趣公园 , 版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权
转载请注明原文链接:快速基于elasticsearch搭建一个中文文本检索系统
喜欢 (0)
发表我的评论
取消评论

表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址