来往——7天轻松定制属于自己的搜索引擎

【Open Search产品评测】来往(http://www.laiwang.com/ )

 

[使用背景]

相信很多人都遇到过要给网站或者app做一个搜索功能的需求,很久之前自己折腾过lucene,搞了很久,要自己搞中文分词(比如用中科院的那个)重写tokenizer,自己建索引,做实时更新流程,数据量大了还要考虑怎样给数据分环等等各种问题。从2014年初开始接触opensearch,当时来往要做扎堆搜索(包括搜扎堆,搜帖子,搜某个堆内的帖子,搜堆内成员等)从上手到熟练使用opensearch只用了大概不到1周的时间,总体来说非常满意。感觉这个东西非常符合互联网创业的节奏,简单方便,很快的就能实现自己的搜索接口。

 

[使用过程]

以建立一个来往的扎堆搜索为例(如果不知道扎堆是啥,就理解成类似于百度贴吧的东西),比如搜赵薇,我们能找到赵薇相关的扎堆。我来简单讲述一下怎样迅速的用opensearch搭建一个搜索接口。

1. 注册opensearch的账号,按操作来就好了。

2. 创建一个应用,定义索引结构。例如:

 这里面可搜索,可以理解成需要建索引的字段,比如扎堆的名字,扎堆的pinyin名字,扎堆的标签等。可聚合我这目前没有使用,先不管这个。可过滤,比如某个字段(checkin_type)表示有的扎堆是私密的,有的不是,那么需要把checkin_type勾选成可过滤,这样在检索的时候可以写语句来选取保留哪些符合条件的搜索结果。可展示表示,搜索接口出来我们要给client显示哪些字段。

3. 数据导入,opensearch提供了3种数据导入的方式可以根据应用需要自己选择。比如从mysql导入,都是图形化的界面,需要做的只是将mysql中的字段和刚才建立的索引结构的字段对应起来。也可以通过hdfs,和sdk还有http的api把数据push过来,sdk和http的api方式非常灵活,具体做法可以参考帮助文档讲的很清楚。[注:mysql\hdfs只有内网支持]

4. 建立索引,在界面里点击数据导入这个tab,会有索引重建这块,点击现在重建,opensearch会从刚才我们配置的数据库里,按照配置的字段对应方式,从数据库里读出数据并建立索引。等待这个过程结束,就可以访问搜索接口了。

5. 访问搜索接口,在应用首页的右上角点搜索测试。

如图中有http的接口,访问后返回的是json格式的搜索结果数据。这样最简单的一个搜索雏形就这样搭建出来了。

 

[使用技巧]

下边说一些可能会遇到的需求和问题:

1. 比如遇到排序需求,例如需要A字段命中比B字段的命中要更重要,即A字段匹配的好的要排在前面(比如title和content)。这样可以自定义排序公式,可以参考文档这里给了很多排序函数,比如可以用bm25算法算静态分,text_relevance算和某个字段的匹配程度,fieldterm_proximity计算匹配的密度,也有按时间字段衰减的函数。

2. 比如遇到一些召回方面的需求,例如搜zhoujielun希望可以搜出周杰伦,搜明星可以出所有明星相关的文档(并不一定包含明星两个字),可能通常比较大的搜索引擎通过query refine和query correct这种类似的模块来分析query来扩大召回,这里可以稍微投机一下,我们把确定的希望召回的term可以做成一个新的字段放到索引结构里,并给这些字段一个排序的权重来做到召回并可以合适的排序。

3. 比如遇到搜索附近的事物的需求,排序函数里提供了一个distance函数,是算球面距离的,这个方法是o(n)的,如果数据多了,可能效率会有影响。我们可以在索引结构里做一个字段,用geohash算法(此算法参考http://en.wikipedia.org/wiki/Geohash)将query里的二维坐标变成一些前缀相同的字符串(比如我们可以固定留5,6,7,8位的),把这些geohash后的字符串放到这个新的索引字段里。检索的时候也同样把输入的二维坐标算出5,6,7,8位的geohash串,在这些串能索引到的数据里用distance函数进行更精准的距离计算并排序,可以很高效的完成附近的事物的搜索。

4. 另外数据量这块,目前数据量最大的索引约有5000w个doc,这个状况下在qps500的时候依然可以做到10ms以内返回搜索结果(当然搜索结果的每个doc的可展示字段不要太大,这样响应时间会因为网络传输数据变的慢一些)。

 

[需求]

1. 还有发现一些查询的badcase,在query分析和结果的求交求并这块还是有些badcase的,例如假如我们搜 “周杰伦 中学 照片”,按照重要程度感觉上是周杰伦>>中学=照片,即使没有全命中的文章,那么也应该召回周杰伦 照片或者 周杰伦的文档。相信这块会越做越好的。

OpenSearch解答:目前正在开发一个新功能,会对用户query做多个维度的改写,比如低权重term降权,支持用户自定义词典(同义词、纠错、停用词、专业词等),会进一步提升长尾词的搜索效果,降低无结果率。

 

2. 如果能提供相关搜索功能就更好了:). 比如根据这个搜索应用经常搜的一些query的log,给出搜这个query的用户还可能搜什么词儿。

OpenSearch解答:相关搜索、下拉提示等功能都已经在规划中,包括后续的点击反馈、个性化搜索我们都已经开始调研工作了,敬请期待。

 

[总结]

总之,opensearch帮助使用者解决了搜索功能上很多很多的问题,使得我们在短时间内就可以很容易的按照自己产品的需求定制出自己的搜索引擎。

 

时间: 2024-08-01 19:14:02

来往——7天轻松定制属于自己的搜索引擎的相关文章

【云中沙箱】轻松定制跨终端的视频点播服务-新年活动评论送实验体验券!

前段时间的朋友圈被<奔跑吧,兄弟>.<欢乐颂>.<琅琊榜>等各种刷屏.现在使用点播技术的视频网站越来越火.本文将介绍如何通过阿里云定制跨终端的视频点播服务.          首先,普及下视频点播的起源:视频点播(Video on Demand ,简称VOD)是20世纪90年代在国外发展起来的,根据观众的要求播放节目的视频点播系统,把用户所点击或选择的视频内容,传输给所请求的用户.          那么,视频点播系统是如何实现的呢?当用户发出点播请求时,流媒体服务系统

利用Spring MVC轻松实现页面缓存

缓存|页面 Spring的MVC是一个非常灵活的框架,可以无缝集成Struts/WebWork以及Velocity/Tapestry等View技术.Spring的DispatherServlet定义极为灵活,由于是开源框架,我们通过源代码,能轻松定制自己的处理流程. 为了实现页面缓存,可以改写DispatherServlet的doService()方法,这里提出一个解决方案: 利用WrappedResponse获得handler处理后的内容,然后缓存起来,这样在下次请求时,可以直接输出缓存内容.

MFC 定制控件(Customize Control) 及 MFC CWnd和WIN32 HWND关联方法

MFC 定制控件(Customize Control) 及 MFC CWnd和WIN32 HWND关联方法  <参考资料 MSDN MFC TNO 15>  文档将概述MFC中定制自定义控件的3种方法: 拥有者绘制控件(Owner Drawing Control and Menu)   自绘制控件(self drawing control and menu)  和子集化(subclass)  1  使用MFC方法定制控件必备的几个基本概念:  控制定制风格的控件的几个标准Windows消息: 

利用Ajax和jQuery UI创建具有各种定制功能的高度可定制UI

如今,网站比以往更具17813.html">可定制性,http://www.aliyun.com/zixun/aggregation/18736.html">允许用户更改其空间,根据自己的喜好对其进行个性化.个性化的主页或仪表板页面(例如 iGoogle.MyYahoo! 和 MyAOL)日渐普及,大多数 Web 应用程序内甚至也整合了类似的功能.jQuery 库简化了此类复杂 JavaScript 交互的编写,随着 jQuery UI 的引入,这项功能得到了进一步的简化,

jQuery UI结合Ajax创建可定制的Web界面_jquery

如今,网站比以往更具可定制性,允许用户更改其空间,根据自己的喜好对其进行个性化.个性化的主页或仪表板页面(例如 iGoogle.MyYahoo! 和 MyAOL)日渐普及,大多数 Web 应用程序内甚至也整合了类似的功能.jQuery 库简化了此类复杂 JavaScript 交互的编写,随着 jQuery UI 的引入,这项功能得到了进一步的简化,该库以易于访问的 jQuery 插件的形式提供了常用用户界面类型. 本文介绍了如何利用 Ajax 和 jQuery UI 创建具有各种定制功能的高度可

定制,八百客CRM为企业“量脚制鞋”,助跑未来

"没有人喜欢穿过于肥大或挤脚的鞋子,最让人失望的情形莫过于拥有很多双鞋却无一适用",这是八百客功能演示视频里的一句精彩开场白.对于应用程序管理软件来说也是同样的道理,每个企业都希望应用程序管理软件能适用于其组织的独特需求,行业的业务处理方式,业务的开展方式以及员工的工作方式.然而,面对各类需求,众多企业管理软件却没有一款应用程序管理软件是万能的. 在企业管理过程中,并非公司所有人都需要应用程序管理软件所附带的所有字段,有时候企业需要的只是添加符合企业自身特色的字段:有的企业习惯于将客户

马云内部撰文强推来往:不参与就不该呆在这家公司里

中介交易 http://www.aliyun.com/zixun/aggregation/6858.html">SEO诊断 淘宝客 云主机 技术大厅 马云内部撰文强推来往 对微信发起正面挑战(TechWeb配图) [TechWeb报道]10月21日上午消息,有消息人士爆料称阿里巴巴董事局主席马云昨日中午在阿里巴巴内部论坛发帖,强调了移动通信产品"来往"对于阿里巴巴的重要性,强制每一个阿里员工11月底前必须有外部来往100个用户,并在帖子中正面向微信发起挑战.马云称来往&

个性化网站定制的分析和思考

中介交易 SEO诊断淘宝客 站长团购 云主机 技术大厅 自2006年以来,个性化定制网站遍地开花,他们依托在线设计互动平台,提供个性印刷品(贺卡.台历.挂历.明信片.请柬.名片等).T恤.马克杯等.本文着重分析个性化定制网站的定义,结构.营销上的一些实务做法,在此基础上和各位分享笔者的一些分析和思考. 首先说说什么是个性化定制网站,它有什么功能,可以为您做什么?要想明白这个,先来看看定制的历史.据<左传·定公十年>记载:"有礼仪之大,故称夏;有服章之美,谓之华."简单来说,

web标准化 用CSS定义标题的几个实例

css|web|web标准 原文:What is the Best Way to Mark up the Title of a Document? 说明:本文是 <Web Standards Solutions: The Markup and Style Handbook>一书中的一章.书号:ISBN:1590593812.我们会陆续翻译此书中有价值的章节. 原作者:Dan Cederholm 翻译:阿宏 一个文档标题,最好的定义方法是什么?要回答这个问题,先设想我们要在一个页面上定义文章的标