知乎的站内搜索还有救吗? - 知乎

标签: 知乎 搜索 知乎 | 发表时间:2017-06-18 15:34 | 作者:
出处:https://www.zhihu.com
第一次在知乎上得到这么多赞,有点担忧,生怕自己说的不好,误人子弟!





其实,我是一个从事互联网搜索引擎开发5年的码侬,当然也不是造轮子,就是Java方向的利用Solr来进行二次开发。所以,从事的都是垂直领域特定搜索引擎开发:电子商务领域和招聘行业。



针对知乎搜索,我提出的几点可优化的方案,只是我在从业经历中碰到的变态需求中的一部分。我回头看这篇答案,有种“我原来是个搜索产品经理啊”的即视感。



NO......NO..NO.!其实我是一个码侬,骄傲的码侬,这意味着,这些方案是经过我的实践,至少Solr里面都可以有比较好的实现,并不是信口开河,误人子弟!心安了。



说下这次更新的重点吧:

一、先前说到的“含有优质答案的问题”,所谓优质答案是一种抽象的概念,需要一整套完备的答案评估体系,暂且称为“答案等级评估系统”



这个系统需要考虑多方面的因素,这方面经验欠缺的我,只能脑洞大开,针对答案考虑:文本长短、文本关键字重复率、文本主题模型、答题时间(答题耗时)、点赞数、感谢、无帮助数、评论数、评论中答主的评论数、评论人数。

再开一下:点赞的质量,就是不同用户点赞的分量有所区别。



二、知乎的先天优势

知乎从一开始就收集了暴多的个性信息,包括问题的话题归纳、用户感兴趣话题、用户关注问题、用户关注用户。那么通过话题就可以将问题和用户形成有机结合,通过用户这个枢纽,可以连接问题、答案、话题。这些数据都是个性化搜索引擎梦寐以求的数据,也是推荐引擎最好的原始输入。



三、将“答案等级评估系统”和“搜索引擎”结合起来,可以让搜索结果有很多种可能

抛弃以往的关键字相似度排序,给每个用户不同的但是更好的排序体验。让用户真正可以搜得到自己想要、感兴趣的问题。



四、多维度搜索拆分

如果没办法在一个搜索输入框做到按问题、按答案、按关注用户答案进行搜索问题,那么可以直接用多个tab标签分离,多个输入框。因为用户进行搜索的时候,往往带着目的性,我这次是要搜某个以往的问题,或者搜索某个用户的回答。

知乎现在是多维度合并,通过下来选择来决定走向,但是用户往往都是被培养了习惯,喜欢直接回车搜索,并不能达到效果。个人觉得,直接拆分更清晰!









----------------------------------- 原答案如下 --------------------------------

首先,可以确定知乎搜索用的就是全文检索引擎:


这里,我搜索的关键字是:“社交搜索引擎和社会化搜索引擎的区别是什么?”,结果第一条命中了我复制的问题,而且做了关键字高亮。“和”,“的”,“是”这种没有高亮,是因为在通常的分词系统中是属于停用词或者无意义的词,分词器最终得到的最小分词单元会舍弃这些词。

所以,我有理由相信,知乎这个是包含分词的全文检索,绝对不是扫描匹配。



以下先讨论问题和答案的搜索,用户和话题在另外的tab标签,另谈。

那么问题出在哪里?

排序是个大大的问题。

先看一个图片:

我输入关键字“搜索”,从结果来看,这个排序结果采用的是典型的包含TF/IDF算法的空间向量排序模型。具体到这个结果,TF的意思就是包含“搜索”次数越多的标题,排序越靠前;DF就是包含“搜索”这个关键字的问题数,IDF就是这个问题数量的倒数,DF越大,IDF越小,对排序值的贡献越小(主要是对于多关键字搜索有影响)。



还有一个参数对排序产生了影响,就是标题的长度,标题越长,某个关键字的重要性就会降低,相当于权重被分摊了。这个有点类似于PageRank算法的中的一个小细节,链接的出度越大,每个出度得到的权重越小。



以上这种排序方式属于全文检索中最基础的排序,对于全网文献来说比较有用,对于垂直领域搜索引擎来说,这个算法有点太Low了,因为仅仅依靠文本自身的权重以及关键字出现次数,完全无法达到越来越变态的搜索需求,而且无法应对作弊。试想,某个问题重复多次包含某个关键字,那么搜索该关键字是,这个问题肯定靠前。



我觉得对于这个问题,其实很好解决。

1、弃用基于空间向量模型排序算法。知乎作为问答型社区,问题搜索的排序可以考虑问题的热度、答案数、答案的文本内容、问题的标签、问题的提问时间、问题的最后回答时间。可以将部分优质答案进行同步索引,可以支持通过答案搜索问题。

我去搜索关键字“搜索”,你真以为我就想看“搜索?”这个问题?我肯定是想找搜索相关的问答,有更多优质回答的问题对我来说更重要。问题是否与关键字相关,必须基于答案是否与关键字相关,仅仅只有问题的问题,毫无意义。



2、对于一定时间内提出的问题,必须优先排序;同时考虑一些沉睡的问题,让含有优质答案的沉睡问题,排序靠前,唤醒活跃度(定时唤醒包含优质回答的问题);根据用户的搜索历史记录,统计时下热门关键字,热门话题,对这些关键字的结果进行特殊处理。



3、排序中,必须排除没有优质答案的问题。用户来搜索问题,不是为了搜索到鲜有答案的问题,然后来回答。而是通过关键字,搜索到以前看到过的感兴趣的问题(一般问题中有让他感兴趣的答案),或者直接搜索答案,来定位问题。



4、索引优质答案的好处是,关键字搜索结果更饱满,列出标题的时候,列出命中答案的摘要,类似百度这种高亮摘要。可以满足一大部分用户搜索答案的需求。



5、排序必须要个性化。很多关键字会很跨多个领域、话题,但是当前用户不可能关注了所有话题。所以,我觉得,比较好的做法是将当前用户关注的话题对应的问题排序靠前;当前用户关注的用户回答过的问题排序靠前;当前用户直接关注的问题,排序必须靠前。当然,前提都是在保证关键字命中率的基础之上。

纯粹靠搜索引擎来得到结果的时代已经过去了,搜索结果排序中加入个性化信息,才是一个比较好的方式。也就是,搜索引擎和推荐引擎进行有机结合





先回答这么点吧。

相关 [知乎 搜索 知乎] 推荐:

为什么知乎的搜索功能如此之烂? - 知乎

- -
(潜水员终于有可以专业回答的问题了). 利益相关:搜狗搜索工程师,对搜索技术「略懂」. 搜索是技术方向辐射相当广的一个复杂系统,其技术门槛之高,在众多的互联网产品中能与搜索比肩的是少之又少. 要想玩转这套系统,拥有一批最优秀且懂搜索的工程师和研究员是必不可少的. 我看到之前@熊辰炎同学也提到说想解决的话,知乎可能需要5个熟练工干大半年.

知乎的站内搜索还有救吗? - 知乎

- -
第一次在知乎上得到这么多赞,有点担忧,生怕自己说的不好,误人子弟. 其实,我是一个从事互联网搜索引擎开发5年的码侬,当然也不是造轮子,就是Java方向的利用Solr来进行二次开发. 所以,从事的都是垂直领域特定搜索引擎开发:电子商务领域和招聘行业. 针对知乎搜索,我提出的几点可优化的方案,只是我在从业经历中碰到的变态需求中的一部分.

知乎 HBase 实践 - 知乎

- -
HBase 是一个基于 Hadoop 面向列的非关系型分布式数据库(NoSQL), 设计概念来源于谷歌的 BigTable 模型,面向实时读写、随机访问大规模数据集的场景,是一个高可靠性、高性能、高伸缩的分布式存储系统,在大数据相关领域应用广泛. HBase 系统支持对所存储的数据进行透明切分,从而使得系统的存储以及计算具有良好的水平扩展性..

知乎的搜索功能被黑飞了 于是找了搜狗搜索

- - TECH2IPO
「酒香不怕巷子深」,这话说得倒是没错,但是如果寻觅「酒香」的「导航」出了问题确实有够烦人的,知乎就是这么个例子. 知乎的内容质量高这个自不必多说,但是知乎的搜索…… 却真的是一个大问题,尤其是到了手机端上,经常给你搜出一些不知所云的结果,实在是很影响「体验」,这个问题已经被广泛吐槽,比如 这个问题 , 这个问题 和.

知乎问答

- - 人月神话的BLOG
没有编程经验的,至少需要掌握哪些知识,才能胜任软件产品的需求分析工作. 在这里首先要注意编程经验和懂编程,编码和软件工程是两回事情. 举个例子你没有在生产线做过工人,但是不代表你不可以了解一个产品从原材料开始如何从生产线生产出来的. 你可以当生产线去参观和学习,当然如果你能够在生产线实习一段时间印象更加深刻.

知乎的困境

- zhengyun - 无网不剩
为什么有的照片拍出来建筑物是倾斜的. 陈奕迅的『爱情转移』到底想要表达什么. iphone4升级到ios5 beta3后,可不可以降到4.3.3. 第一反应是到知乎提问,且能在较短时间内得到满意的答复,那么知乎就成了. 其实从产品上是完全可以应付的,最难的是用户为什么要来这里提问. 如果我有iphone4,第一反应肯定是去weiphone.

知乎产品体验报告:于知乎,你真的知乎?

- - 人人都是产品经理
对于“知乎”,你真的知乎. 一份关于“知乎”的全方位产品体验报告帮你了解知乎. 系统版本:6.0.1MXB48T. 体验时间:2016.12.3-2016.12.9. Logo:以代表诚实、信赖、知性的蓝色为底色,以“知”字作为产品标识,特别是对其右侧的“口”做了仿对话框的改动,点明知乎是汇聚智慧的知识交流平台.

知乎招募工程师

- oxygen - 知乎的博客
Python工程师  有两年以上软件开发经验. 至少一年 Python 开发经验. 对开源技术有强烈的兴趣和爱好,参与或向开发者提交过bug和patch. 热爱探索和钻研,熟悉文本挖掘、自然语言处理相关知识能使用C/C++独立实现复杂的算法结构熟悉开源搜索项目(Lucene,Sphinx等)极强的逻辑分析能力对开源技术有强烈的兴趣和爱好,参与或向开发者提交过bug和patch认为自己是技术geek有极强的责任感.