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

测试 一个自制的 V2EX 搜索

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

    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
    酷。。。
    tr>
    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  
    PRO
       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
    PRO
       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 我也是这么想的,会尽快开源。
    div id="r_1321940" class="cell">
    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  
    PRO
       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     Solana     2986 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 38ms UTC 14:08 PVG 22:08 LAX 06:08 JFK 09:08
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86