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

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

  •  
  •   techv · 62 天前 · 3525 次点击
    这是一个创建于 62 天前的主题,其中的信息可能已经有所发展或是发生改变。

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

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

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

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

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

    第 1 条附言  ·  56 天前

    谢谢大家的反馈。

    根据反馈,dig.codes (挖码)作为一个“代码知识库”,提供“代码搜索服务”,这种搜索是基于自然语言的,而不是只在工程代码中匹配。

    因此,“代码知识库”的建立很重要,除了机器挖掘之外,UGC也是非常重要的途径。下一步,挖码将推出 [代码知识管理] ,方便用户记录编码中产生的有价值的“代码知识”。

    如何激励用户产生代码知识是一个非常非常重要的问题,如果大家有何意见请回复讨论。初步想法是,产生一条知识就会累积积分,用户点赞也有积分,而积分有何用呢?值得深入思考。

    帖子发了一周,得到了下面的访问量曲线: 访问量曲线

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

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

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

    在实现上加一些规则是否可以让结果更精准命中一些?比如 github 的 language:这种功能呢?
    fuis
        12
    fuis  
       62 天前   ❤️ 1
    xiadd
        13
    xiadd  
       62 天前
    huntagain2008
        14
    huntagain2008  
       62 天前
    牛逼,开始我以为是 searchcode 一样的光搜代码片段的东西。结果搜到了我想知道的用法,各种教学。比如
    ``` shell
    awk 'max<$5 || NR==1{ max=$5; data=$2 } END{ print data }'
    ```
    我是小白,用 awk 查找某一列的最大值,这一段我就搞不清楚 NR==1 是干嘛的,结果用 awk ' max < || NR == 1 用你的搜索引擎一搜就搜到了。有点像别人现场教学的感觉。
    techv
        15
    techv  
    OP
       62 天前
    @gogogo1203 做精与做全并不矛盾,做精可能需要更多的人力投入,现在正在探索如何用机器做知识的抽取,这个做好了可以解决很多问题,可以从一点出发做精做透,探索知识抽取的路径。
    techv
        16
    techv  
    OP
       62 天前
    @njutree 现在还不能跟 Google 比,它的收录面很广
    gogogo1203
        17
    gogogo1203  
       62 天前
    @techv 我觉得中文和英文同时做自然语言得学习实在太难了。还是取舍和定位吧。
    techv
        18
    techv  
    OP
       62 天前
    @tobeyoung
    @fuis
    @xiadd
    这 3 个是纯粹的代码片段搜索,也就是我提到的下一步可能要做的。现在的 dig.codes 跟他们不同,可以理解为类似搜索引擎的图片搜索,输入一段文字描述得到一段段代码。
    cweijan
        19
    cweijan  
       62 天前
    试了几下, 没搜到想要的
    techv
        20
    techv  
    OP
       62 天前
    @mahone3297 与 copilot 还是不一样,它是帮助你补充代码,digcodes 是帮你补充代码知识。
    初试 copilot 确实被它惊艳到了,我自定义的数据结构它都能“理解”而补充了正确的代码,几次之后就相信了它,然而它对复杂的数据结构有时候不准确,导致 debug 好久才发现是它代码的问题。
    techv
        21
    techv  
    OP
       62 天前
    @fengyiqicoder language: 过滤在计划中,应该能提高准确率,多谢。
    techv
        22
    techv  
    OP
       62 天前
    @LeeReamond 谢谢鼓励,它在不断进化,请多多使用,希望它有一天能成为你的助手。
    techv
        23
    techv  
    OP
       62 天前
    @huntagain2008 恭喜您,发现了它的真正目的,希望这个特点成为它的价值。
    techv
        24
    techv  
    OP
       62 天前
    @fgd 谢谢,希望能帮到您。
    techv
        25
    techv  
    OP
       62 天前
    @gogogo1203 确实很难,我再好好考虑考虑取舍和定位的问题,谢谢您的建议。
    zagfai
        26
    zagfai  
       62 天前
    "python redis asyncio" 没有得到想要答案
    Echoldman
        27
    Echoldman  
       62 天前
    用了一下,感觉很有意思,一定程度上能给到我想要的东西。
    好奇的问下,这是你的个人在做的项目吗?
    haobogu
        28
    haobogu  
       62 天前
    如果是 Java 的话,可以试一下 IDEA 的插件 Alibaba Clouding Coding Assistant ,里面也有类似的代码搜索功能 https://alibaba-cloud-toolkit.github.io/cosy/#/zh-cn/guide/how-to-use-codesearch
    techv
        29
    techv  
    OP
       62 天前
    @zagfai 现在有了。知识库还需继续扩充。
    techv
        30
    techv  
    OP
       62 天前
    @Echoldman 如有想要的功能尽管提出来哦。是的,个人项目。
    techv
        31
    techv  
    OP
       62 天前
    @haobogu 好的,去学习一下
    xman99
        32
    xman99  
       62 天前
    挺有意思的,哈哈
    LemonK
        33
    LemonK  
       62 天前
    优秀,关注了。曾经设想过类似的 UGC+知识图谱,OP 用搜索+机器抽取效果也很不错。
    我个人还是赞同#2 先按语言一个个做精的想法,如果某个语言结果不全或者质量不高,对这个语言的用户来说就是基本不可用,留着也意义不大。
    techv
        34
    techv  
    OP
       61 天前
    @LemonK 多谢您和#2 的建议,已经在思考如何从单点做精。
    zagfai
        35
    zagfai  
       61 天前
    @techv 所以这个扩充是手动的嘛?还是?。。。
    techv
        36
    techv  
    OP
       61 天前
    @zagfai 手动添加数据源
    huntagain2008
        37
    huntagain2008  
       33 天前 via iPhone
    printf %b
    点搜索就
    500 — Internal Server Error

    The server encountered an internal error and cannot complete your request.

    iphoneXs safari
    techv
        38
    techv  
    OP
       29 天前
    @huntagain2008 已修复,非常感谢您的反馈。
    关于   ·   帮助文档   ·   API   ·   FAQ   ·   我们的愿景   ·   广告投放   ·   感谢   ·   实用小工具   ·   1453 人在线   最高记录 5497   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 30ms · UTC 17:56 · PVG 01:56 · LAX 10:56 · JFK 13:56
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.