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

上线了一个 V2EX 的站内搜索工具

  •  8
     
  •   mornlight ·
    bynil · 2017-09-24 15:21:14 +08:00 · 14521 次点击
    这是一个创建于 2619 天前的主题,其中的信息可能已经有所发展或是发生改变。
    V 站上各种不同想法不同类型的人因为非利益因素汇聚到一个地方是蛮有意思的一件事,这里有价值的信息还是挺多的。想要寻找沉淀下来的信息就需要搜索,Google 的搜索其实能满足基本要求,但无法进行个性化的打分,也不是所有人都可以随时流畅访问,所以萌生了自己做站内搜索的想法。

    其实这个话题之前被讨论过很多次了,而且在三年前曾出现过一个自制的搜索: /t/131547,只是这个站没有维护下去。这次我重新把这个想法捡起来,也作为个人学习 Elasticsearch 的练手作品,尽力提高完成度。

    主要的精力花在了摸索 Elasticsearch 的使用上,试图做到精确度、易用性和性能消耗上的平衡。
    我不太会做 Web 前端,所以页面是直接拿 @dbbbit 那个老项目的模板改过来的,临时拼凑了一下,还需要改进(看我期待的小眼神 )。

    作为搜索入口的 Flask 项目就一点点代码非常简单,放在 GitHub: https://github.com/Bynil/sov2ex

    大致的评分逻辑是:
    1. 对搜索词的匹配权重 标题 > 内容=附言 > 回复;
    2. 能将搜索词短语匹配(精确匹配)到的主题会大幅加分,以保证排序靠前;
    3. 主题的收藏数和感谢数会小幅加分;
    4. 沙盒结点( /go/sandbox ) 和 请不要再发这样的文章结点( /go/ohno )下的主题会略微减分。

    欢迎各位使用并反馈意见: https://www.sov2ex.com

    只要没有遇到阻力或出现更好的替代品,这个项目会长期维护下去。

    repo 里有索引的 mapping 结构和搜索请求体,作为新手对 Elasticsearch 的调教还有欠缺,欢迎有经验的朋友提出改进意见。
    同时,repo 里也包含了搜索 API 的文档,目前没有关键字以外的参数,如果大家对于搜索入口有定制需求,可以回复这个主题或者提 issue 或者直接 PR,只要不破坏社区的规则就可以(比如按主题作者搜索的功能)。
    42 条回复    2024-02-23 14:09:07 +08:00
    miao
        1
    miao  
       2017-09-24 15:24:51 +08:00
    利用 V2EX 的 api ?
    BearD01001
        2
    BearD01001  
       2017-09-24 15:27:54 +08:00 via iPhone
    难道不应该直接 site:v2ex.com xxxxx 来搜索吗?
    mornlight
        3
    mornlight  
    OP
       2017-09-24 15:28:19 +08:00
    @miao #1 爬虫会从 API 拿数据,爬虫的代码还没有整理好。
    mornlight
        4
    mornlight  
    OP
       2017-09-24 15:47:20 +08:00
    @BearD01001 #2 搜索引擎给的过滤条件和排序方式是通用的,不能定制。
    flaneurse
        5
    flaneurse  
       2017-09-24 15:54:13 +08:00 via Android
    其实希望能有按时间排序的搜索结果
    mornlight
        6
    mornlight  
    OP
       2017-09-24 16:02:55 +08:00
    @flaneurse #5 可以有,site:v2ex.com/t 其实也能做时间排序。如果把时间作为唯一的排序依据,那么你希望关键词按什么样的模式来命中主题呢?
    jamfer
        7
    jamfer  
       2017-09-24 16:08:41 +08:00
    @mornlight 同样需要时间排序
    tszyh
        8
    tszyh  
       2017-09-24 16:13:08 +08:00
    我确实需要 1 个站内搜索
    google 的搜索需要设置 55 不方便
    site 的方式确实可以当作临时方案,但是没有被索引到的搜索不到
    Marfal
        9
    Marfal  
       2017-09-24 16:40:45 +08:00
    其实 V2EX 可以上 algolia @Livid
    lhx2008
        10
    lhx2008  
       2017-09-24 17:00:35 +08:00 via Android
    挺好挺好
    scriptB0y
        11
    scriptB0y  
       2017-09-24 19:33:19 +08:00
    搜“女朋友”,发现这些话题很有趣
    mornlight
        12
    mornlight  
    OP
       2017-09-25 00:09:58 +08:00 via iPhone
    @scriptB0y 我没有搜过这种我没有的东西🌝
    q33q33
        13
    q33q33  
       2017-09-25 06:47:09 +08:00 via Android
    很好
    abmin521
        14
    abmin521  
       2017-09-25 10:05:30 +08:00
    搜索某$$有结果 但跳转首页 莫非数据库比较早?
    misaka20
        15
    misaka20  
       2017-09-25 11:39:22 +08:00
    https://www.v2ex.com/t/377144#reply13 不如用我的 APP,自带 V2EX 站内搜索。赶紧逃走。。。。。。。
    mornlight
        16
    mornlight  
    OP
       2017-09-25 12:29:24 +08:00 via iPhone
    @abmin521 因为某些节点的主题你的帐号访问不了,这和搜索没关系。
    mornlight
        17
    mornlight  
    OP
       2017-09-25 13:09:22 +08:00
    @misaka20 #15 要不,咱们 PY 交易一波,把你这个换成我的搜索?
    mpich
        18
    mpich  
       2017-09-25 13:38:45 +08:00   ❤️ 1
    不错,先 star,不过缺的东西还不少,周末我给你写点别的。。
    mornlight
        19
    mornlight  
    OP
       2017-09-25 13:56:43 +08:00
    @mpich #18 这是坠吼的
    misaka20
        20
    misaka20  
       2017-09-25 14:49:10 +08:00
    @mornlight 我的搜索是默认跟 V2EX 差不多的,看了这帖子的回复,有需求添加时间排序的,感觉这是不错的需求,回去给我的 APP 加上 笑。。。。。
    kenshin
        21
    kenshin  
       2017-09-25 18:55:32 +08:00
    很棒的项目 👍
    刚刚用它查出来我需要的内容,节省了很多时间。

    希望 UI 再加强些 ~ 比如:

    - xxx replies 最好跟日期一行;

    - 某些查询显示条目没有 description ;而有些却有;

    - 首页的 Seach UI 最好能在 「现代化」 些。 😉
    bkmi
        22
    bkmi  
       2017-09-25 19:04:48 +08:00 via Android
    我隐藏了我的主题列表,禁止了搜索引擎索引我的帖子,结果你们用这样的方式又把它搞出来了,扒的时候能不能遵守一下 robots 协议啊
    mornlight
        23
    mornlight  
    OP
       2017-09-25 19:17:23 +08:00
    @kenshin #21 换行的问题改好了; description 是命中了关键词的内容,如果只有回复里命中,目前不会高亮出来,会改进。Web UI 上的工作我只能找别人帮忙了。
    mornlight
        24
    mornlight  
    OP
       2017-09-25 19:26:22 +08:00
    @bkmi #22 V 站针对单个用户的不允许搜索引擎收录是通过页面上 noindex, nofollow 标签来实现的,这个并非通用的规范,我拿数据也是通过 API 进行的,API 中没法知道、被更新这个状态。

    出于隐私考虑,这个站内搜索不会提供任何通过作者 ID 搜索的功能,只会去命中内容里的关键词。我只能做到这里了。
    johnyu
        25
    johnyu  
       2017-09-26 08:55:46 +08:00
    好高端好腻害。。。。期待中。
    ctt
        26
    ctt  
       2017-09-26 10:37:01 +08:00
    很不错,以前一直 site:v2ex.com ,终于有专属的了,只求时间 filter
    qianmeng
        27
    qianmeng  
       2017-09-26 15:09:48 +08:00 via Android
    多个关键词的支持好像不太好
    mornlight
        28
    mornlight  
    OP
       2017-09-26 16:33:26 +08:00
    @qianmeng #27 如果你搜索一个比较长的中文中间又没有空格的话,默认会有一套分词的流程,变成多个关键词。所以我不太能理解你说的这个问题,有实际的 case 可以让我试试吗?
    qianmeng
        29
    qianmeng  
       2017-09-26 22:00:49 +08:00 via Android
    比如我搜索 facebook php

    结果是先搜索第一个,再搜索第二个
    yang2yang
        30
    yang2yang  
       2017-09-28 09:42:29 +08:00
    用了一下,还是没有看懂和 site:v2ex.com xxxx 有啥区别,上面说的不能定制,你这个怎么定制的?
    mornlight
        31
    mornlight  
    OP
       2017-09-28 12:30:50 +08:00
    @yang2yang #30 排序算法、过滤条件都可以定制。
    ksco
        32
    ksco  
       2017-09-28 18:31:17 +08:00
    可以做成插件直接放在本站内
    mornlight
        33
    mornlight  
    OP
       2017-09-28 18:46:16 +08:00
    @ksco #32 插件的话目前最理想的方式是集成到 V2EX plus 插件里,做一个开关替换 Google 搜索,而非专门做一个插件。不知道 @sciooga 对此有没有兴趣。
    sciooga
        34
    sciooga  
       2017-09-29 10:58:37 +08:00
    @mornlight #33 可以尝试,只是最近一直闲不下来... 不太有时间
    akaayy
        35
    akaayy  
       2017-10-07 10:57:51 +08:00
    能不能把最新的帖子放在最前面?
    mornlight
        36
    mornlight  
    OP
       2017-10-07 13:09:12 +08:00 via iPhone
    @akaayy 按时间排序搜索的接口已经做好了,但目前 Web 版还没有把这个功能加上去。
    Antidictator
        37
    Antidictator  
       2017-10-15 00:00:08 +08:00
    二手节点的也搜的到,牛逼了!
    Antidictator
        38
    Antidictator  
       2017-10-15 00:03:13 +08:00
    感谢,收藏,评论+Star
    gudezhi
        39
    gudezhi  
       2017-10-19 18:16:07 +08:00
    需要时间段过滤
    mornlight
        40
    mornlight  
    OP
       2017-10-19 18:20:23 +08:00
    @gudezhi 现在新版是有时间段过滤器的
    kwklover
        41
    kwklover  
       2018-06-08 15:28:37 +08:00
    你这个界面做的挺友好的,因为我是专门做站内搜索系统( http://www.searcheasy.net),所以比较关注这方面
    Cu635
        42
    Cu635  
       276 天前   ❤️ 1
    现在 V2EX 的搜索栏已经集成了 op 的这个站内搜索了,和 google 站内搜索并列。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   3242 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 26ms · UTC 13:05 · PVG 21:05 · LAX 05:05 · JFK 08:05
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.