V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
Braisdom
V2EX  ›  程序员

请教一个问题,搜索词的生成应该怎么做。

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

    例如在 Google 中输入:Java

    google 会生成: javascript, java binary search, java 教程等一些列。

    这些生成算法应该使用哪些?

    29 条回复    2022-10-22 18:12:24 +08:00
    optional
        1
    optional  
       225 天前 via iPhone
    ML 的经典场景
    Braisdom
        2
    Braisdom  
    OP
       225 天前
    @optional 有具体的方法吗,目前只需要做到及格分就可以了。
    XJohn
        3
    XJohn  
       225 天前
    一般都不是算法生成的。
    suggest 数据都会有以下一些来源:
    1. 搜索数据本身的一些 title 、tag 属性等
    2. 用户的搜索词(如用户可能会搜索 java ,还可能会搜索 javascript)
    3. 爬虫抓取
    Braisdom
        4
    Braisdom  
    OP
       225 天前
    @XJohn 数据我有,我主要是做数据分析的搜索,关键词 都是预定义的,数据会比较多。
    realrojeralone
        5
    realrojeralone  
       225 天前
    最简单的直接基于 Trie 做,query 的权重要加到 TrieNode 里,Trie 树里召回一堆词以后再加入一些提前处理好的非前缀词,比如和召回 query 强相关的中缀、后缀,最后排序
    Braisdom
        6
    Braisdom  
    OP
       225 天前
    @realrojeralone 序列的权重怎么处理呢,例如:java orm 后面的词,单个词的权重容易计算,序列就比较麻烦了。
    optional
        7
    optional  
       225 天前 via iPhone
    如果只是前缀匹配,那非常简单,像楼上说的 trie 树或者直接数据库前缀匹配都可以获得一些推荐,难的是怎么做权重和关联性
    wx006
        8
    wx006  
       225 天前 via iPhone
    @Braisdom 处理好的数据写到 es 可以满足要求吗
    MindMindMax
        9
    MindMindMax  
       225 天前
    其实,搜索运营人员也会参与进来
    Braisdom
        10
    Braisdom  
    OP
       225 天前
    @wx006 ES 倒是一个不错的方法,检索起来也比较灵活,搜索效率也够用了。
    realrojeralone
        11
    realrojeralone  
       225 天前
    @Braisdom 没有序列的概念,每个 suggestion 都是整体,比如 "javascript" / "java orm",在数据挖掘时 "java orm" 是从日志中挖掘出的用户 query ,如果很多人搜了 "java orm",这个 query 的权重就比较高。虽然在搜索时引擎内部会分词做召回,但是实际上用户想搜索的是个整体 "java orm",所以这个 query 就是个 suggestion ,不需要再分词单独计算权重。
    Braisdom
        12
    Braisdom  
    OP
       225 天前
    我在做一个类似 ThoughtSpot 的项目,目前核心的 SQL 编译已经解决了,就差搜索提醒和 UI 了。
    realrojeralone
        13
    realrojeralone  
       225 天前
    没有性能要求,对效果要求也不高,可以直接上 ES ,不然没必要自研,还是挺麻烦的
    Braisdom
        14
    Braisdom  
    OP
       225 天前
    @realrojeralone 搜索日志,只能优化排序,原生的搜索词生成是基于系统的关键字检索出来的,系统在冷启动时,排序可以是随机的,随着使用情况,逐步优化。当然也可以初始化一些排序。
    Braisdom
        16
    Braisdom  
    OP
       225 天前
    @realrojeralone 最关键是能够持续学习,随着持续的使用,能够学习到用户的使用习惯。
    realrojeralone
        17
    realrojeralone  
       225 天前
    @Braisdom 听起来不是搜索引擎类产品,那就可以先人工运维一版初始的 query 和权重,后续有了搜索日志以后再优化,或者考虑其他不用 Trie 的实现,完全用算法 比如 n-gram 生成 suggestion
    buyan3303
        18
    buyan3303  
       225 天前
    不懂的人提一嘴 搜索关联展现这东西,好像是叫倒排索引。
    至于怎么展现 就是上面各位坛友说的了。
    Braisdom
        19
    Braisdom  
    OP
       225 天前
    @realrojeralone 我想做的是根据用户输入的关键词编译成不同数据库的 SQL ,进行数据分析,和搜索引擎不太一样,但搜索提醒是用户体验的关键,这块做不好,后面再强大,也没啥用。
    fcten
        20
    fcten  
       225 天前
    trie 树召回,召回之后再排序。没必要把召回和排序放到一起,不利于后续迭代优化。
    Braisdom
        21
    Braisdom  
    OP
       225 天前
    发现一个项目: https://github.com/jermp/autocomplete

    正在尝试,应该会有帮助。
    v2exblog
        22
    v2exblog  
       224 天前
    老哥你的搜索引擎已经快做完了吗?关注你好久了
    Braisdom
        23
    Braisdom  
    OP
       224 天前
    还是搜索引擎,但返回的结果不一样了,今年年底前上线第一个版本。必须上线
    Braisdom
        24
    Braisdom  
    OP
       224 天前
    目前,最复杂的 SQL 编译已经完美的解决了,在学习 React 写前端。
    LookLookBigDick
        25
    LookLookBigDick  
       224 天前
    方案是怎么样的啊 能够说一下吗?
    Braisdom
        26
    Braisdom  
    OP
       224 天前
    @LookLookBigDick 你是指什么方案,SQL 编译,还是搜索词提醒的方案?
    simonlu9
        27
    simonlu9  
       224 天前
    elasticearch,的 suggest 可以根据上下文来推荐搜索推荐词,要定时更新对应的热度,不是一直不变的
    Braisdom
        28
    Braisdom  
    OP
       224 天前
    @simonlu9 我准备用 ArrangoDB 做,就做前缀匹配,排序是综合排序,后面再用机器学习生成,

    https://github.com/jermp/autocomplete
    这个项目可以用,只要把搜索日志给他就可以了。
    LookLookBigDick
        29
    LookLookBigDick  
       223 天前
    搜索词提醒方案,最终有确定有用方式去实现吗,我想虚心学习一下,因为自己没有思路。
    关于   ·   帮助文档   ·   博客   ·   nftychat   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   2471 人在线   最高记录 5634   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 40ms · UTC 06:05 · PVG 14:05 · LAX 23:05 · JFK 02:05
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.