原文转自:http://yhzhtk.info/2013/07/02/1-aliyun-opensearch.html

前几天申请了阿里云开放云搜索(Aliyun OpenSearch)的邀请码,今早通过收到通过验证了,于是准备试试云搜索。

阿里云搜索使用很简单,和Lucene一样,包括索引文档字段几个概念。每个索引可以当成数据库的一个数据库,一条文档当成数据库的一条记录,一个字段就是数据库的一个字段。

目前支持四种形式的搜索模板,资讯类,小说类,应用类和社区类。模板在这儿就是规定好了索引的字段,也可以自定义。详细介绍

我想测试一下,就把自己的博客写的这十几篇POST发上去建立索引吧,使用了资讯类的模板。

模板字段如下:

字段名 类型 字段说明 独立检索 可检索 可排序 可筛选
id STRING 文档标识(必选)      
title TEXT 资讯标题    
body TEXT 资讯内容      
type_id UINT16 类型,如财经      
cat_id UINT16 组别,支持多个,如"cat_id":[12, 13]、"cat_id":["12", "13"],具体请参加模版数据类型说明      
url STRING 展示url        
author TEXT 作者    
thumbnail STRING 缩略图        
source TEXT 新闻来源      
create_timestamp UINT32 创建时间    
update_timestamp UINT32 更新时间    
hit_num UINT32 点击数    
focus_count UINT32 关注数    
grade UINT32 读者评分    
comment_count UINT32 评论数    
boost INT8 站长自定义加分项    
integer_1 UINT32 保留字段,站长自定义    
integer_2 UINT32 保留字段,站长自定义    
integer_3 UINT32 保留字段,站长自定义    
tag TAG 标签      
display_text STRING 站长自定义展示字段        

提供的需要上传的JSON格式示例:

[{"fields": {"body": "广大中小企业都有各种结构化的数据需要进行检索,目前一般采用数据库本身提供的搜索功能或者利用open source的搜索软件搭建", "display_text": "open search", "hit_num": "88888", "update_timestamp": "1345448016", "type_id": "1", "url": "http://www.aliyun.com", "cat_id": [1,2], "author": "阿里云", "grade": "10", "comment_count": "1234", "tag": {"搜索":10,"阿里云":2,"云搜索":5,"开放搜索":8}, "source": "阿里云云搜索", "focus_count": "8888", "title": "阿里云隆重推出开放搜索", "boost": "1", "id": "id_1", "integer_1": "100", "create_timestamp": "1345448016"}, "cmd": "ADD"}, ...
]

其中很多字段用不上,可以忽略。我的博客都是在jekyll中的post类型,需要把所有的post转为JSON格式。我写了一个Python,来处理_post文件夹下面的所有文章,最后导出Json

#coding=utf-8
'''
将jekyll中_post目录下的文章到处json格式,用于阿里云搜索
@author: gudaihui
'''import os
import re
import json
import timedef object2dict(obj):'''使用内置json转换时,需要将对象转为dict'''#convert object to a dictd = {}d.update(obj.__dict__)return dclass PostInfo():'''存储一条博客的所有字段类'''def __init__(self, title, tags, content, rooturl, f):self.title = titleself.tag = {}#标签有一个权重,默认都为1for t in tags.split(","):self.tag[t.strip()] = 1self.body = contentself.id = f.replace("-", "").replace(".html", "")self.display_text = "open search"self.hit_num = "88888"#处理日期和URLt = re.match('\\d{4}-\\d{2}-\\d{2}', f).group()self.url = rooturl + f.replace(t + "-", (t + "-").replace("-", "/"))self.update_timestamp = "%d" % time.mktime(time.strptime(t,'%Y-%m-%d'))self.create_timestamp = "%d" % time.mktime(time.strptime(t,'%Y-%m-%d'))self.type_id = "1"self.cat_id= [1,2]self.author="yhzhtk"self.grade="10"self.source="yhzhtk"self.boost = "1"def getPostInfo(path, rooturl="http://yhzhtk.info/"):'''从文件中读取所有的POST返回PostInfo信息'''os.chdir(path)posts = [[open(f, "r").read(), f]for f in os.listdir(path) if f.endswith(".html")]pattern = re.compile(r"---\nlayout: post\ntitle: ([^\n]*)\ntags: \[([^\]]*)\]\n---\n(.*)", re.DOTALL)infos = []for post, f in posts:match = pattern.match(post)if match:title = match.group(1)tags =  match.group(2)content = match.group(3)content = re.sub("<[^>]*>","",content)content = re.sub("{%[^%]*%}","",content)content = content.replace("\n", "")infos.append(PostInfo(title, tags, content, rooturl, f))return infosdef genPostJson(infos):'''将PostInfo处理得到最后的Json'''jsonstr = ""for info in infos:temp = json.dumps(info, ensure_ascii=False, default=object2dict)temp = '''{"fields":''' + temp + ''', "cmd": "ADD"}'''jsonstr += "," + tempif json:jsonstr = jsonstr[1:]jsonstr = "[" + jsonstr + "]"print jsonstrif __name__ == '__main__':'''开始执行'''path = r"C:\Documents and Settings\yicha\blog\_posts"infos = getPostInfo(path)genPostJson(infos);

所有的json是直接输出了,也可以输出到一个文件中。然后将文件上传到刚才新建的索引中。刷新,看到文档条数不为0,就可以点击搜索测试了,如果数量仍为0,可以查看错误日志,里面写明了错误的文档和错误原因。最后,可以通过给的API把搜索功能添加到你的产品中。

搜索的效率问题现在还没法知道,因为文档数比较少。等有机会可以应用到实际中测测。

阿里云开放云搜索初探相关推荐

  1. 一分钟了解阿里云产品:阿里云开放云搜索初探

    前阶段申请了阿里云开放云搜索(Aliyun OpenSearch)的邀请码,今早收到通过验证了,于是准备试试云搜索. 阿里云搜索使用很简单,和Lucene一样,包括索引文档字段几个概念.每个索引可以当 ...

  2. 从市场应用角度上来划分,云可分为文件云、应用云、手机云和开放云

    根据云存储的特性,可以在不同的产品上,进行应用.所以从其市场应用角度上来看,产品定位应分为:"文件云"."应用云"."手机云"." ...

  3. 【初码干货】使用阿里云开放搜索服务快速搭建资源搜索网站

    大家好,我又来了,答应云栖论坛一周一篇文章, 由于工作太忙已中断1个多月实在抱歉,这一次写点轻松有趣的东西-快速的做个资源搜索站 依稀记得十来年前,带宽还只有2M的时候,受各个论坛启发,做了可以搜索嘿 ...

  4. 阿里云开放搜索实践,使用阿里云开放搜索来做网站站内搜索...

    阿里云的开放搜索已经做得很完善了,现在阿里云集成了开放搜索,只要定义好表结构,上传数据,就会自动生成索引,马上就可以搜索了,简直可以做个搜索引擎了.一起来看看. 阿里云开放搜索介绍及购买页 首先,创建 ...

  5. 使用阿里云开放搜索服务快速搭建资源搜索网站

    下面我们就一步一步来搭建这个简单的资源搜索网站 一.搭建前的一些准备和分析 资源搜索网站有如下几个关键点: 1.原始数据 没有个几百万条初始搜索数据,都不好意思和别人说是做资源站的,在这个案例里面,我 ...

  6. 苹果重新设计开源官网;阿里云开放 YoC 源代码;GitHub 开发 Code Search 功能 | 开源日报

    整理 | 宋彤彤 责编 | 屠敏 开源吞噬世界的趋势下,借助开源软件,基于开源协议,任何人都可以得到项目的源代码,加以学习.修改,甚至是重新分发.关注「开源日报」,一文速览国内外今日的开源大事件吧! ...

  7. 关于阿里云的图像搜索的创建和使用

    大家好哇,我又来了,这次我们来聊下关于阿里云的图像搜索功能的创建和使用. https://click.aliyun.com/m/1000371702/ 1.我们可以通过上面的链接进入到阿里云云产品免费 ...

  8. 开个坑, 写个阿里云开放储存服务(OSS)的C++版SDK以及客户端

    这应该是继我研究手册QQ协议后的第2个稍微正式一点的网络程序, 不只是Scoket套接字编程, 还涉及到更多的HTTP协议知识! 阿里云开放储存服务OSS官方已经提供了不少SDK, 包括PHP/Pyt ...

  9. 阿里云开放国内首个云端数据库测试平台,云已成为数据库新标准;华为5G随行WiFi发布;科大讯飞推出 AI 专用语音芯片系列……...

    戳蓝字"CSDN云计算"关注我们哦! 嗨,大家好,重磅君带来的[云重磅]特别栏目,如期而至,每周五第一时间为大家带来重磅新闻.把握技术风向标,了解行业应用与实践,就交给我重磅君吧! ...

最新文章

  1. Redis的字典扩容与ConcurrentHashMap的扩容策略比较
  2. android json解析及简单例子
  3. 成功解决raise XGBoostError(_LIB.XGBGetLastError()) xgboost.core.XGBoostError: b'[22:08:00] C:\\Users\\Ad
  4. CVE-2021-33909:Linux本地权限提升漏洞
  5. 冬季巧食生姜可提高免疫力
  6. GDCM:DICOM文件转储ADAC文件的测试程序
  7. 如何将前端数据保存到文件
  8. 整型数据类型java_Java 六种基本整型数据类型变量的取值范围
  9. 平安产险项目记录(二)
  10. JavaScript中Element与Node的区别,children与childNodes的区别
  11. VFP9 连接mysql代码示例
  12. Qt5下载与安装(Windows版)
  13. 《未来世界的幸存者》摘录
  14. TCP/IP中MSL详解
  15. 【openpyxl】插入图表(折线图)
  16. ArcEngine IProximityOperator踩坑小记
  17. 最牛训犬师,专治拆家打架咬人,20多年搞定2000多条狗
  18. 电脑怎么安装excel表格
  19. 30行代码用python实现软件翻译
  20. 计算机ps2定义,软件硬件界面接口定义 bt656 硬件接口定义

热门文章

  1. Java学习之Path路径
  2. 内测分发平台什么意思?有可以免费内测分发的平台吗?
  3. Android ViewGroup拦截触摸事件详解
  4. DbVisualizer 导出大数据
  5. MySQL数据库——MySQL主键(PRIMARY KEY)
  6. es文件管理连接ftp服务器,es文件浏览器访问ftp服务器
  7. jmeter连接数据库
  8. 一只特立独行的猪等待收养
  9. WBV334U01-S/BF-WBV334a02_0.5直流电流电压传感器
  10. 电路原理图 英语缩写 符号汇总