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

2017-09-24 15:21:14 +08:00
 mornlight
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,只要不破坏社区的规则就可以(比如按主题作者搜索的功能)。
14309 次点击
所在节点    分享创造
42 条回复
kenshin
2017-09-25 18:55:32 +08:00
很棒的项目 👍
刚刚用它查出来我需要的内容,节省了很多时间。

希望 UI 再加强些 ~ 比如:

- xxx replies 最好跟日期一行;

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

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

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

结果是先搜索第一个,再搜索第二个
yang2yang
2017-09-28 09:42:29 +08:00
用了一下,还是没有看懂和 site:v2ex.com xxxx 有啥区别,上面说的不能定制,你这个怎么定制的?
mornlight
2017-09-28 12:30:50 +08:00
@yang2yang #30 排序算法、过滤条件都可以定制。
ksco
2017-09-28 18:31:17 +08:00
可以做成插件直接放在本站内
mornlight
2017-09-28 18:46:16 +08:00
@ksco #32 插件的话目前最理想的方式是集成到 V2EX plus 插件里,做一个开关替换 Google 搜索,而非专门做一个插件。不知道 @sciooga 对此有没有兴趣。
sciooga
2017-09-29 10:58:37 +08:00
@mornlight #33 可以尝试,只是最近一直闲不下来... 不太有时间
akaayy
2017-10-07 10:57:51 +08:00
能不能把最新的帖子放在最前面?
mornlight
2017-10-07 13:09:12 +08:00
@akaayy 按时间排序搜索的接口已经做好了,但目前 Web 版还没有把这个功能加上去。
Antidictator
2017-10-15 00:00:08 +08:00
二手节点的也搜的到,牛逼了!
Antidictator
2017-10-15 00:03:13 +08:00
感谢,收藏,评论+Star
gudezhi
2017-10-19 18:16:07 +08:00
需要时间段过滤
mornlight
2017-10-19 18:20:23 +08:00
@gudezhi 现在新版是有时间段过滤器的

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/393225

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX