做了一个代码搜索引擎: dig.codes

2022-04-24 08:31:53 +08:00
 techv

作为一个全栈开发者,经常要在多种语言之间挑战,然而最熟悉的只有一种,其它的往往是随用随学,对搜索引擎的依赖很大,而搜索引擎的结果需要再点进去查找,比较繁琐了那么一点点。

dig.codes 希望减少那一点点繁琐,在结果页主要显示代码,通过看这一页的结果快速解决编程中的问题,比如“js 数组 方法”。如果需要深入了解这个问题,再点击原始链接查看详情。

实际上,“减少那一点点繁琐”的愿望并不好实现。dig.codes 的数据源是在线教程、文档、博客,挖掘其中的代码匹配用户查询并把最符合的代码呈现给用户,这个匹配过程其实相当难。用户输入是带有语义的自然语言,目前搜索引擎的算法主要是字符串匹配,这中间有个巨大的鸿沟——语义。这就导致你很容易发现 bad case ,当然也有很多 good case 。也尝试了语义搜索的方法,但是效果比字符串匹配差很多。这个愿望的圆满还任重道远。

下一步,搜索算法,减少答非所问的情况。同时也在考虑是否要实现 github 代码搜索。目前的搜索,主要是搜索文档中的代码,要搜索 GitHub 的话就是从工程代码中搜,即纯代码搜索。由于 GitHub 已经提供的代码搜索,dig.codes 再提供类似的功能意义何在?近期一直在考虑这个问题。如果您有什么建议,欢迎回复提出,十分感谢。

请大家试用 https://dig.codes/ , 提出您的宝贵意见和建议,以及各种讨论,谢谢,谢谢。

5069 次点击
所在节点    分享创造
39 条回复
sciel
2022-04-24 08:58:46 +08:00
不错呀,虽然搜索 文字转语音 没有找到想要的结果
不过还是收藏,下次遇到问题时试试哈
另外 移动端下输入框可以加长一点( ´▽`)
gogogo1203
2022-04-24 09:02:52 +08:00
1. dark mode 可以做一个. 大家用的频率应该很高, 我用自动 dark mode 的插件,页面看得有点怪。
2. 搜索的结果还是有点差强人意, 尤其是竞品越来越强,copilot 是一种没有办法逾越的大山。我也是全栈,golang- js-css-docker-sql 跳来跳去的,原来仰赖 Notion 自己做知识库. 现在 copilot 在我还没有想好下一步写啥,它就能给出答案。
3. 我觉得可以缩小范围,最初只做一个语言或者一个框架的知识库。这样好完善内容建设,也好吸引用户。我觉得你把一个 react 各种 hooks 做好,就会有不少人用了
4. 加入更多的用户自己打标签? ucg ?
techv
2022-04-24 09:24:19 +08:00
@gogogo1203 哇喔,太详细的回复!
1. dark mode 确实是用的很多, 有空试试。
2. 跟 copilot 还是无法攀比的,这个工具最初是向快速查询基础用法,比如“js 遍历数组”对于偶尔用 js 的人来说,需要看一个 code 例子就可以马上学会,当然搜索结果有待大大提高。
3. 这是个很好的建议,如果设计好一种知识库插件机制,每个语言是一个知识库。知识库:1. 有特定的数据结构; 2. 可以从文档自动生成该结构知识库; 3. 众包知识库。
4. ucg 是个好方向。用户打标签外,还可以用户写代码;有人出题,有人做题。如何激励用户产生内容需要好好想想。
techv
2022-04-24 09:32:26 +08:00
@sciel 你的这个问题比较高级了些,它目前的智力比较适合语言基础之类的问题。
确实忽略了移动端的输入框,需要优化。
njutree
2022-04-24 09:38:38 +08:00
感觉结果需要优化, 现在的结果感觉还不如 google
gogogo1203
2022-04-24 09:40:24 +08:00
我建议还是要把定位做清晰一点,把 target customer 再做小一点,大而全的结果是推广难,内容乱。

你看你是要定位成“完全没有用过 arr.map 的”用户, 还是“知道 arr.map, 但是一段时间不用,忘记了”的用户。 可能 arr.map 不是一个很好的例子,arr.reduce 估计很多人都用过, 但是一段时间不用就忘了。

我个人建议前期做透做精一个点. 或者做成个人知识库的管理, 也可以共享知识库. 大家都是全栈, 什么都懂点,什么都不精.如果一个产品也跟我一样,那可不太行.
tobeyoung
2022-04-24 10:06:12 +08:00
LeeReamond
2022-04-24 10:09:32 +08:00
支持 lz 探索的精神,但是我试着上去搜了几个关键字得到的结果都不是很好。。
mahone3297
2022-04-24 10:14:48 +08:00
感觉要被 copilot 打败。使用起来 copilot 效率会更高
fgd
2022-04-24 10:24:03 +08:00
不错,感觉我能用到。
MaxSoloware
2022-04-24 10:26:18 +08:00
想法很不错哎,但是我随便试了一下比如 swift import musickit 出来的都是 JS 的结果。

在实现上加一些规则是否可以让结果更精准命中一些?比如 github 的 language:这种功能呢?
fuis
2022-04-24 11:27:44 +08:00
xiadd
2022-04-24 11:32:02 +08:00
huntagain2008
2022-04-24 12:49:31 +08:00
牛逼,开始我以为是 searchcode 一样的光搜代码片段的东西。结果搜到了我想知道的用法,各种教学。比如
``` shell
awk 'max<$5 || NR==1{ max=$5; data=$2 } END{ print data }'
```
我是小白,用 awk 查找某一列的最大值,这一段我就搞不清楚 NR==1 是干嘛的,结果用 awk ' max < || NR == 1 用你的搜索引擎一搜就搜到了。有点像别人现场教学的感觉。
techv
2022-04-24 13:33:21 +08:00
@gogogo1203 做精与做全并不矛盾,做精可能需要更多的人力投入,现在正在探索如何用机器做知识的抽取,这个做好了可以解决很多问题,可以从一点出发做精做透,探索知识抽取的路径。
techv
2022-04-24 13:34:54 +08:00
@njutree 现在还不能跟 Google 比,它的收录面很广
gogogo1203
2022-04-24 13:35:23 +08:00
@techv 我觉得中文和英文同时做自然语言得学习实在太难了。还是取舍和定位吧。
techv
2022-04-24 13:37:15 +08:00
@tobeyoung
@fuis
@xiadd
这 3 个是纯粹的代码片段搜索,也就是我提到的下一步可能要做的。现在的 dig.codes 跟他们不同,可以理解为类似搜索引擎的图片搜索,输入一段文字描述得到一段段代码。
cweijan
2022-04-24 13:40:10 +08:00
试了几下, 没搜到想要的
techv
2022-04-24 13:41:34 +08:00
@mahone3297 与 copilot 还是不一样,它是帮助你补充代码,digcodes 是帮你补充代码知识。
初试 copilot 确实被它惊艳到了,我自定义的数据结构它都能“理解”而补充了正确的代码,几次之后就相信了它,然而它对复杂的数据结构有时候不准确,导致 debug 好久才发现是它代码的问题。

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

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

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

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

© 2021 V2EX