V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
爱意满满的作品展示区。
dbbbit
V2EX  ›  分享创造

测试 一个自制的 V2EX 搜索

  •  9
     
  •   dbbbit ·
    dbbbit · 2014-09-03 18:29:12 +08:00 · 9086 次点击
    这是一个创建于 3739 天前的主题,其中的信息可能已经有所发展或是发生改变。
    先贴地址:

    http://shixiz.com

    用 elasticSearch 作为搜索引擎,数据来自 v2ex 的 api 接口

    索引了全部主题和大部分回复(主题目前半小时更新一次,回复还未开始更新)

    这几天刚刚加上了中文分词,可用性总算达到了及格线。

    自己 YY 了一种简单的`综合排序`方法

    log2(回复数)* 搜索引擎的匹配得分 * log2(发帖时间 - 建站时间)

    同时还可以根据 `发布时间` `回复数` `匹配分` 对结果排序。

    部署在 ec2 上,索引全部数据居然用了两天啊,妈蛋。是分词用的词库太大?

    p.s. 回贴最好贴下`搜索关键词`和`结果评价`
    感恩 :)
    第 1 条附言  ·  2014-09-04 20:43:02 +08:00
    开放 API 测试:

    http://shixiz.com:8000/api?q=python&from=2&limit=1&s=match

    @hoogle

    各参数的意义如下(与 web 一致):

    q:请求关键词
    from: 偏移
    limit: 页大小
    s:排序 ['match', 'created', 'sumup', 'replies']
    48 条回复    2014-09-07 23:09:35 +08:00
    hoogle
        1
    hoogle  
       2014-09-03 18:45:54 +08:00
    大赞。。 有考虑提供接口么? 想在客户端提供搜索功能。 这个刚好~!!!
    dbbbit
        2
    dbbbit  
    OP
       2014-09-03 18:54:06 +08:00
    @hoogle
    哈,接口可以有
    kisshere
        3
    kisshere  
       2014-09-03 19:41:45 +08:00
    log2(回复数)* 搜索引擎的匹配得分 * log2(发帖时间 - 建站时间)能解释一下为什么要这样吗?
    dbbbit
        4
    dbbbit  
    OP
       2014-09-03 20:04:28 +08:00   ❤️ 1
    @kisshere
    首先必须说明,这是YY出来的。

    如果你有兴趣可以看看阮一峰翻译的几篇排序算法。
    包括 hacknews reddit 等。
    http://www.ruanyifeng.com/blog/2012/02/ranking_algorithm_hacker_news.html

    楼主在认真看了这几个算法后,发现还是没太多实际的想法
    于是手动测试出这个综合评分的算法,结果怎么样也说不好。
    不过 至少可以保证 排在前面的结果与那三个因素成正比
    log2 是因为想要减低某种因素的影响

    大概就是这样。
    Mihuwa
        5
    Mihuwa  
       2014-09-03 20:27:07 +08:00   ❤️ 1
    酷。。。
    kchum
        6
    kchum  
       2014-09-03 20:36:47 +08:00 via iPhone
    被玩坏了?手机党打不来!
    freeze
        7
    freeze  
       2014-09-03 20:46:24 +08:00   ❤️ 1
    楼主能把搜索栏居中吗?看着难受
    qiayue
        8
    qiayue  
       2014-09-03 20:50:43 +08:00   ❤️ 1
    赞!
    XerWandeRer
        9
    XerWandeRer  
       2014-09-03 20:52:05 +08:00   ❤️ 1
    关键字: http proxy
    结果评价: Right on target.
    Thanks!
    yetone
        10
    yetone  
       2014-09-03 20:54:41 +08:00   ❤️ 1
    大赞!
    ilovehoo
        11
    ilovehoo  
       2014-09-03 20:56:52 +08:00   ❤️ 1
    不错哦~~
    dbbbit
        12
    dbbbit  
    OP
       2014-09-03 20:57:19 +08:00
    @kchum 我的可以打开。。
    @freeze 本人前端渣 页面是乱来的,多谢意见
    jdqingm
        13
    jdqingm  
       2014-09-03 21:05:39 +08:00
    哎呦不错哦
    Akagi201
        14
    Akagi201  
       2014-09-03 21:18:21 +08:00
    lw-clogger 我前几天发的帖子, 没有搜到, google是有的
    dbbbit
        15
    dbbbit  
    OP
       2014-09-03 21:30:07 +08:00
    @Akagi201
    确实是,中间数据断层了。回头补上,爬虫不够健壮
    jas0ndyq
        16
    jas0ndyq  
       2014-09-03 22:20:31 +08:00
    好喜欢忍者图标~~~有木有版权~~~
    dbbbit
        17
    dbbbit  
    OP
       2014-09-03 22:36:15 +08:00
    @jas0ndyq
    我的头像和搜索的图标都是非法使用。。。
    jas0ndyq
        18
    jas0ndyq  
       2014-09-03 22:41:34 +08:00
    @dbbbit 好吧~~~
    kokdemo
        19
    kokdemo  
       2014-09-03 23:25:00 +08:00   ❤️ 1
    log2(回复)
    这一项的权重太大了,会导致更容易搜出来的是那些经典长贴……
    zhiyongyici
        20
    zhiyongyici  
       2014-09-04 01:25:38 +08:00 via iPhone
    google 无法使用的前提下,这简直就是神器!
    momou
        21
    momou  
       2014-09-04 01:27:45 +08:00
    Failed to load resource: net::ERR_CONNECTION_RESET http://cdn.bootcss.com/jquery/1.11.1/jquery.min.js
    Failed to load resource: net::ERR_CONNECTION_RESET http://cdn.bootcss.com/bootstrap/3.2.0/css/bootstrap-theme.min.css
    Livid
        22
    Livid  
    MOD
       2014-09-04 07:36:52 +08:00
    做得非常好。

    我比较好奇,目前这个数据量,是跑在一台什么配置的机器上呢?
    dbbbit
        23
    dbbbit  
    OP
       2014-09-04 07:42:08 +08:00 via iPad   ❤️ 1
    @Livid
    就是 ec2 的免费实例
    单核 1Gb ssd
    dbbbit
        24
    dbbbit  
    OP
       2014-09-04 08:03:40 +08:00
    @kokdemo
    虽然也有同感,但是能否给几个关键词?
    方便我作为判断和调整的依据
    不能否认做排序的时候我并不介意经典大长贴出现在前面
    但是有时候时间太过久远,比较难取舍,这是个难题诶
    也欢迎提供更好的排序方法。
    vinsa
        25
    vinsa  
       2014-09-04 08:05:08 +08:00
    相当赞
    nsxuan
        26
    nsxuan  
       2014-09-04 08:36:14 +08:00
    @dbbbit 如果能开源一下 就再好不过了
    dbbbit
        27
    dbbbit  
    OP
       2014-09-04 08:40:35 +08:00
    @nsxuan 我也是这么想的,会尽快开源。
    talentsnail
        28
    talentsnail  
       2014-09-04 09:03:30 +08:00
    感谢已发送:)
    dudong0726
        29
    dudong0726  
       2014-09-04 09:18:23 +08:00
    dota2
    谷歌抽风之后,v2的搜索一直是个痛
    windedge
        30
    windedge  
       2014-09-04 09:28:35 +08:00
    v2ex的api限制一个小时只能访问120次, 你爬取数据用了多长时间?
    kokdemo
        31
    kokdemo  
       2014-09-04 10:48:59 +08:00
    @dbbbit

    你现在用的公式是: log2(回复数)* 搜索引擎的匹配得分 * log2(发帖时间 - 建站时间)

    分为三个部分,回帖数,匹配得分,存在时间三个部分。

    但是考虑到v2上会有一些吵架贴的存在,所以第一部分其实很不稳定。

    相对来说,你可以取帖子的收藏数,感谢数为一个依据。

    其次是发帖人的资质,比如注册时间,发帖数,回帖数。

    当然我不知道你能不能抓到这些数据,仅仅是给一些建议。
    dbbbit
        32
    dbbbit  
    OP
       2014-09-04 12:38:35 +08:00   ❤️ 1
    @kokdemo

    非常好的建议。

    现在的方法是基于手上的数据,里面确实没有你的建议里提到的数据类型。
    主要我比较懒,我会试试爬取更多的数据。

    关于发帖人的资质
    曾想过用 pagerank 对用户做 rank。
    一个 @ 动作就是一次投票。
    得到发帖人的 rank 用来作为排序因素之一,但计算能力不足 作罢。
    dbbbit
        33
    dbbbit  
    OP
       2014-09-04 12:40:54 +08:00
    @windedge

    一个小时只能访问120次? 貌似没有发现这个限制
    yuankui
        34
    yuankui  
       2014-09-04 12:55:37 +08:00   ❤️ 1
    问下楼主为什么要用elasticSearch作为搜索引擎
    而不是solr/lucene之类的呢?
    ven
        35
    ven  
       2014-09-04 14:03:15 +08:00
    威武!
    xiaowangge
        36
    xiaowangge  
       2014-09-04 14:18:47 +08:00
    楼主能把搜索栏居中吗?看着难受 = =.

    :-)
    jaylong
        37
    jaylong  
       2014-09-04 14:33:48 +08:00   ❤️ 1
    早就不爽自带的google自定义搜索了。楼主加油!
    dbbbit
        38
    dbbbit  
    OP
       2014-09-04 15:27:08 +08:00
    @xiaowangge
    具体是哪个搜索栏?
    web? 手机?
    dbbbit
        39
    dbbbit  
    OP
       2014-09-04 15:42:10 +08:00
    @yuankui

    楼主通常选择东西都是凭感觉 囧
    es 和 solr 都是基于lucene,好坏楼主也说不上来
    es 是在 logstash + kibana + es 的场景中了解到的
    感觉对 restful 接口很容易使用,对用户较友好
    还有分布式搜索 听起来很炫(虽然还用不上)
    大概就是这样
    hzlzh
        40
    hzlzh  
       2014-09-04 17:05:24 +08:00
    做得很好,pagerank?这个可以有。
    skyline75489
        41
    skyline75489  
       2014-09-04 17:18:05 +08:00
    看起来结果还挺好的,感谢楼主
    withrock
        42
    withrock  
       2014-09-05 01:49:47 +08:00
    不错不错,眼前一亮的赶脚。
    poke707
        43
    poke707  
       2014-09-05 14:04:57 +08:00
    @dbbbit 忍不住私自弄了下前端,不知楼主需要不。。。
    http://juststatic.sinaapp.com
    dbbbit
        44
    dbbbit  
    OP
       2014-09-05 15:19:47 +08:00
    @poke707

    nice!
    我稍微调整了输入框的宽度。
    要是在 pad 和手机上能窄一些就好了。

    需要前端!!!
    请联系我
    [email protected]
    smalldirector
        45
    smalldirector  
       2014-09-05 16:48:44 +08:00
    @dbbbit 非常不错,响应速度也可以,想学习学习,希望能够开源+1
    dbbbit
        46
    dbbbit  
    OP
       2014-09-06 05:58:06 +08:00
    @freeze
    @xiaowangge
    已由 @poke707 居中首页搜索框

    @smalldirector
    @nsxuan
    on the way
    http://v2ex.com/t/131987
    hoogle
        47
    hoogle  
       2014-09-07 14:00:35 +08:00
    感谢。。 太好了。。 我会尽快加上搜索功能~~
    zckevin
        48
    zckevin  
       2014-09-07 23:09:35 +08:00
    相当赞!期待开源~ :-)
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   3096 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 36ms · UTC 13:47 · PVG 21:47 · LAX 05:47 · JFK 08:47
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.