• 请不要在回答技术问题时复制粘贴 AI 生成的内容
Braisdom
V2EX  ›  程序员

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

  •  1
     
  •   Braisdom ·
    braisdom · Oct 21, 2022 · 3819 views
    This topic created in 1475 days ago, the information mentioned may be changed or developed.

    例如在 Google 中输入:Java

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

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

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

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

    https://github.com/jermp/autocomplete
    这个项目可以用,只要把搜索日志给他就可以了。
    LookLookBigDick
    LookLookBigDick
    Oct 22, 2022
    29
    搜索词提醒方案,最终有确定有用方式去实现吗,我想虚心学习一下,因为自己没有思路。
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Privacy   ·   Solana   ·   1287 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 38ms · UTC 22:15 · PVG 06:15 · LAX 14:15 · JFK 17:15
    ♥ Do have faith in what you're doing.