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,只要不破坏社区的规则就可以(比如按主题作者搜索的功能)。
这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。
https://www.v2ex.com/t/393225
V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。
V2EX is a community of developers, designers and creative people.