V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
MarioLuisGarcia
V2EX  ›  问与答

在一个由 md 文件组成的小型文档系统里,如何方便快捷地实现多关键词搜索?

  •  
  •   MarioLuisGarcia · 2018-03-30 12:20:58 +08:00 · 1478 次点击
    这是一个创建于 2212 天前的主题,其中的信息可能已经有所发展或是发生改变。

    在编程的过程中,我会产生一些需求,并尝试去实现这些需求。当我实现了这些需求后,我会把过程记录下来,以供以后复用。

    这些经验以 markdown 的格式被我记录下来,针对一个具体的需求,我会给那个需求加上一个 HEAD ###, 再在 HEAD 下面记载它的实现方法。我把这称之为一个条目 条目是针对需求的解决办法的记录,有的长,有的短。

    一个简短的条目如:

    
    ### List file and directories by size
    du -hs * | sort -h
    
    

    一个较长的条目如:

    ### 在使用 ipython 时获得更好的阅读 help 文档视觉体验
    > 内容涉及解决问题的思路,如何找到的网上的帮助信息及最终的解决方案。
    > 此处略去几百字的具体内容以获得更好的排版和阅读效果
    

    目前我正在使用的方案是: 将相近属性的条目们储存在单个的 md 文件里,md 文件按类别储存在文件夹里,文件夹再进行分类整理。 对上述文件系统使用 gitbook 框架进行索引,展现和简易搜索 网站地址: [https://juchenzeng.gitbooks.io/zjc-s-programming-notes/content/]

    我现在想要满足的需求痛点是(需求程度按先后顺序由高至低): 进行多关键词组合搜索 ( gitbook 不支持) 进行整句搜索 ( gitbook 不支持) 进行模糊搜索 ( gitbook 不支持) 搜索后点击条目后直接跳转到条目所在位置 ( gitbook 只能跳到由条目所在的 md 文件渲染成的 html 页面的顶部)

    针对痛点目前想到的模糊的解决方案:

    1. 在 md 文件里给每个条目加上 html 的某类 tag ( tag 里可以加入多个描述当前条目的关键词),再寻找相关的可以搜索这种 html tag 里关键词的框架或工具。

    2. 将每个条目格式化存入数据库(可能还要写一些格式化工具 Orz),用 flask 之类的框架写一个动态 python web 服务,使用 eleastic search 之类的框架来作为搜索服务,查询时对数据库里的数据进行查询,将结果返回到 html templates 里渲染显示出来。

    我感觉第二种方案的工作量会大很多,所以我现在还是比较倾向于第一种方案。但我又不太了解具体可用的框架和工具,因此特来请教。

    想请教一下各位,关于我想实现的需求(最想实现的是“多关键词搜索”和“前端展现时直接跳转到关键词所在的条目位置”),各位有什么宝贵的意见和建议呢?(十分期待)

    2 条回复    2018-03-31 07:49:18 +08:00
    MarioLuisGarcia
        1
    MarioLuisGarcia  
    OP
       2018-03-30 12:44:03 +08:00
    找到一个进阶的 search 插件,现在整句搜索和搜索后跳转的需求已经被满足了。

    https://www.npmjs.com/package/gitbook-plugin-search-plus
    MarioLuisGarcia
        2
    MarioLuisGarcia  
    OP
       2018-03-31 07:49:18 +08:00
    目前已有 70 位 V2EX 注册会员查看了本主题
    1 次来自 Google 点击
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   5153 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 33ms · UTC 08:18 · PVG 16:18 · LAX 01:18 · JFK 04:18
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.