V2EX = way to explore
V2EX 是一个关于分享和探索的地方
Sign Up Now
For Existing Member  Sign In
爱意满满的作品展示区。
dbbbit

测试 一个自制的 V2EX 搜索

  •  9
     
  •   dbbbit ·
    dbbbit · Sep 3, 2014 · 9876 views
    This topic created in 4259 days ago, the information mentioned may be changed or developed.
    先贴地址:

    http://shixiz.com

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

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

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

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

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

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

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

    p.s. 回贴最好贴下`搜索关键词`和`结果评价`
    感恩 :)
    Supplement 1  ·  Sep 4, 2014
    开放 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 replies    2014-09-07 23:09:35 +08:00
    hoogle
        1
    hoogle  
       Sep 3, 2014
    大赞。。 有考虑提供接口么? 想在客户端提供搜索功能。 这个刚好~!!!
    dbbbit
        2
    dbbbit  
    OP
       Sep 3, 2014
    @hoogle
    哈,接口可以有
    kisshere
        3
    kisshere  
       Sep 3, 2014
    log2(回复数)* 搜索引擎的匹配得分 * log2(发帖时间 - 建站时间)能解释一下为什么要这样吗?
    dbbbit
        4
    dbbbit  
    OP
       Sep 3, 2014   ❤️ 1
    @kisshere
    首先必须说明,这是YY出来的。

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

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

    大概就是这样。
    Mihuwa
        5
    Mihuwa  
       Sep 3, 2014   ❤️ 1
    酷。。。
    kchum
        6
    kchum  
       Sep 3, 2014 via iPhone
    被玩坏了?手机党打不来!
    freeze
        7
    freeze  
       Sep 3, 2014   ❤️ 1
    楼主能把搜索栏居中吗?看着难受
    qiayue
        8
    qiayue  
    PRO
       Sep 3, 2014   ❤️ 1
    赞!
    XerWandeRer
        9
    XerWandeRer  
       Sep 3, 2014   ❤️ 1
    关键字: http proxy
    结果评价: Right on target.
    Thanks!
    yetone
        10
    yetone  
       Sep 3, 2014   ❤️ 1
    大赞!
    ilovehoo
        11
    ilovehoo  
       Sep 3, 2014   ❤️ 1
    不错哦~~
    dbbbit
        12
    dbbbit  
    OP
       Sep 3, 2014
    @kchum 我的可以打开。。
    @freeze 本人前端渣 页面是乱来的,多谢意见
    jdqingm
        13
    jdqingm  
       Sep 3, 2014
    哎呦不错哦
    Akagi201
        14
    Akagi201  
       Sep 3, 2014
    lw-clogger 我前几天发的帖子, 没有搜到, google是有的
    dbbbit
        15
    dbbbit  
    OP
       Sep 3, 2014
    @Akagi201
    确实是,中间数据断层了。回头补上,爬虫不够健壮
    jas0ndyq
        16
    jas0ndyq  
       Sep 3, 2014
    好喜欢忍者图标~~~有木有版权~~~
    dbbbit
        17
    dbbbit  
    OP
       Sep 3, 2014
    @jas0ndyq
    我的头像和搜索的图标都是非法使用。。。
    jas0ndyq
        18
    jas0ndyq  
       Sep 3, 2014
    @dbbbit 好吧~~~
    kokdemo
        19
    kokdemo  
       Sep 3, 2014   ❤️ 1
    log2(回复)
    这一项的权重太大了,会导致更容易搜出来的是那些经典长贴……
    zhiyongyici
        20
    zhiyongyici  
       Sep 4, 2014 via iPhone
    google 无法使用的前提下,这简直就是神器!
    momou
        21
    momou  
       Sep 4, 2014
    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
    PRO
       Sep 4, 2014
    做得非常好。

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

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

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

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

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

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

    当然我不知道你能不能抓到这些数据,仅仅是给一些建议。
    dbbbit
        32
    dbbbit  
    OP
       Sep 4, 2014   ❤️ 1
    @kokdemo

    非常好的建议。

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

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

    一个小时只能访问120次? 貌似没有发现这个限制
    yuankui
        34
    yuankui  
       Sep 4, 2014   ❤️ 1
    问下楼主为什么要用elasticSearch作为搜索引擎
    而不是solr/lucene之类的呢?
    ven
        35
    ven  
       Sep 4, 2014
    威武!
    xiaowangge
        36
    xiaowangge  
       Sep 4, 2014
    楼主能把搜索栏居中吗?看着难受 = =.

    :-)
    jaylong
        37
    jaylong  
       Sep 4, 2014   ❤️ 1
    早就不爽自带的google自定义搜索了。楼主加油!
    dbbbit
        38
    dbbbit  
    OP
       Sep 4, 2014
    @xiaowangge
    具体是哪个搜索栏?
    web? 手机?
    dbbbit
        39
    dbbbit  
    OP
       Sep 4, 2014
    @yuankui

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

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

    需要前端!!!
    请联系我
    [email protected]
    smalldirector
        45
    smalldirector  
       Sep 5, 2014
    @dbbbit 非常不错,响应速度也可以,想学习学习,希望能够开源+1
    dbbbit
        46
    dbbbit  
    OP
       Sep 6, 2014
    @freeze
    @xiaowangge
    已由 @poke707 居中首页搜索框

    @smalldirector
    @nsxuan
    on the way
    http://v2ex.com/t/131987
    hoogle
        47
    hoogle  
       Sep 7, 2014
    感谢。。 太好了。。 我会尽快加上搜索功能~~
    zckevin
        48
    zckevin  
       Sep 7, 2014
    相当赞!期待开源~ :-)
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   2506 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 135ms · UTC 06:44 · PVG 14:44 · LAX 23:44 · JFK 02:44
    ♥ Do have faith in what you're doing.