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

请教这是什么原理?搜索单个汉字,无结果,搜索该字的词组才有结果

  •  
  •   luofeng3000 · 2022-02-10 11:13:51 +08:00 · 1470 次点击
    这是一个创建于 1017 天前的主题,其中的信息可能已经有所发展或是发生改变。
    [ chrome 98.0.4758.82 ] 最新版,在 [历史记录] 里搜索:

    已知有一个网页记录的名字是:三国志……官爵……_百度贴吧

    搜索 官 ,没有这条记录,但会有少量其他类似 XX 官网的 结果
    搜索 爵 ,无记录
    一定要搜索 官爵 才能够找到这条历史记录。

    按常理,不应该是关键字越少,能得到的匹配结果越多吗?
    9 条回复    2022-02-10 20:47:14 +08:00
    leogm9408leo
        1
    leogm9408leo  
       2022-02-10 11:35:00 +08:00   ❤️ 1
    中文分词问题,官爵被认为是一个词也就是一个 keyword 了
    swulling
        2
    swulling  
       2022-02-10 11:39:09 +08:00   ❤️ 1
    中文搜索的困难就在这里了。

    正确的做法,是要建两个索引库,一个是分词后的,一个是分词前的。

    分词搜索的权重比较高,不分词的权重比较低。

    但是实践中,要么是前者,要么是后者。。
    libook
        3
    libook  
       2022-02-10 11:55:39 +08:00   ❤️ 3
    “按常理,不应该是关键字越少,能得到的匹配结果越多吗”还真不一定是这样。

    搜索有两个重要指标,准确、高效。

    用正则表达式简单粗暴全文搜索无疑是效率极低的,所以需要把一句话进行分词拆分来确保拆出来的词汇能跟原文含义有关联,拆得越细关键词越多搜索效率越差,拆得越粗关键词越少搜索效率越高(但相应也难搜到结果了)。这个关系到搜索是否高效。

    中文搜索有个特点,就是不容易让机器理解哪些字是一个词,分词算法合不合适直接影响最终机器在一句话里分出来的词是不是准确,比如“创意工作者们的社区 ”,经过学习和训练的人类可以快速做出准确的分词“创意,工作者们,的,社区”,可以想一想如何让机器也得出这样预期的结果,而不是“创意,工作,者们,的社,区”。这个关系到搜索结果是否准确。

    同时,关键字越少,能匹配到的结果越多,但符合用户预期的结果占比就越小,比如搜“笨蛋”,结果里可能夹杂着“表弟很笨蛋壳也拿来吃”显然不是大多用户想要的,那么从用户体验和节省性能的双重方面考虑,最合适的方案应该是揣测用户意图,给出大概率是用户想要的结果,当然这方面也很难做到就是了,但毕竟是个可期的的方向。

    想深入了解可以看看分词算法相关的文章。
    luofeng3000
        4
    luofeng3000  
    OP
       2022-02-10 12:34:19 +08:00   ❤️ 1
    感谢楼上几位的详细解答。这些解答同时也解释了这些年我所遇到的其他一些相似的场景。比如说,淘宝的搜索经常会答非所问,淘宝的购买记录经常会找不到确实买过的东西。

    但是我想提一下自己的粗浅观点:

    用分词以及同义联想等高级功能来改善初级用户的使用体验,是否同时也带来了很多副作用。而且这些副作用甚至会另资深用户也无从下手。

    正则表达式简单粗暴全文搜索 虽然效率低,但是他是精确的,是实在的,是无欺骗性的。

    结合了人工智能的分词等技术,虽然看似效率高了,但是他是模糊的,是油滑的,是具有欺骗性的。

    还是举刚才那个例子那个使用场景。我记忆中只记得我看过一篇和 [三国志] [官位] 有关的文章,我的记忆很模糊,并没有准确地回想起 [官爵] 这么硬的词,而我清楚地记录最近浏览过很多 [三国志] 的文章,而与官位有关的文章仅有一篇,于是,我一定会去搜索 [官] ,因为我认为无论是什么词,只要和 [官] 字有关的一定是我所要找得文章。但偏偏被我遇到了分词问题,而我又想不起 [官爵] 这个词,最终我只能在一堆三国志的浏览记录里翻滚。而这还算是幸运的。以前有次在淘宝的购买记录里,翻找一条几年前的记录,当翻到的时候却发现明明我搜索关键字是“应该是正确的”,但就是搜索不到,这个酸爽当时我就让淘宝他娘背锅了。

    所以我个人还是比较推崇原始的简单的正则表达式搜索,1 就是 1 ,0 就是 0 。
    czfy
        5
    czfy  
       2022-02-10 12:46:47 +08:00
    全文搜索的效率低,可能你没有深切体会到可能可以到多低

    如果从你按下回车到返回结果,需要 1 分钟,你能接受吗?
    luofeng3000
        6
    luofeng3000  
    OP
       2022-02-10 12:53:46 +08:00
    @czfy 所以你说的是对服务器的效率优化,我说的是用户体验的效率。这种只对服务器有优化而忽略用户体验的进步到底是进化还是退化。
    luofeng3000
        7
    luofeng3000  
    OP
       2022-02-10 12:58:48 +08:00   ❤️ 1
    @czfy 可当我靠关键词搜索无法找到的时候,在一堆记录里面翻找是花了几个小时的。

    有代价的技术优化,这个代价就像一个定时炸弹,什么时候这个代价落到自己的头上才能体会痛苦。
    autoxbc
        8
    autoxbc  
       2022-02-10 16:10:03 +08:00
    楼主是对的,上面有些人瞎扯了,这个场景就是用户在自己浏览记录里搜索,扯啥海量数据分词,是一码事么
    wdv2ly
        9
    wdv2ly  
       2022-02-10 20:47:14 +08:00 via Android
    我有个关注的微信公众号,搜其中一个字搜不到,一定要搜另外一个字才行🐶
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2727 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 24ms · UTC 12:24 · PVG 20:24 · LAX 04:24 · JFK 07:24
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.