› MySQL 5.5 Community Server
› MySQL 5.6 Community Server
› Percona Configuration Wizard
› XtraBackup 搭建主从复制
Great Sites on MySQL
› Percona
› MySQL Performance Blog
› Severalnines
推荐管理工具
› Sequel Pro
› phpMyAdmin
推荐书目
› MySQL Cookbook
MySQL 相关项目
› MariaDB
› Drizzle
参考文档
› http://mysql-python.sourceforge.net/MySQLdb.html
makelove
V2EX  ›  MySQL

关于 MySQL 的全文查询,是不是没有高效的办法限定在一个结果集里搜全文?

  •  
  •   makelove · Jan 4, 2023 · 1816 views
    This topic created in 1365 days ago, the information mentioned may be changed or developed.

    打算给 App 加个简单的搜索功能,不想搞得太复杂,所以就先试了下 MySQL 内置的全文, 比如我要限定在一个用户的文章里搜:

    select * from article 
    where
    	user_id = ?
    	match (title) against ('+???' in boolean mode)
    

    这么干的话貌似会先用全文索引搜索全部用户的文章,然后按用户 ID 一行行过滤,我试了下性能似乎不太好,在千万非 SSD 表上要个 0.5 秒。

    然后我看了下 MySQL 可以同时搜索二个关键词,那我建一列 meta ,放用户 ID,然后我同时搜索这个用户 ID 和关键词:

    select * from article 
    where match (meta, title) against ('+??? +USERID_???' in boolean mode)
    

    发现性能几乎完全一致也要 0.5 秒。 但我单搜一个关键词就非常快 0.001 秒级别的。

    select * from article 
    where match (meta, title) against ('+???' in boolean mode)
    

    所以 MySQL 的全文搜索就是只能搜索一个条件是非常快的,其它的条件都是在前一个搜索结果里过滤? 所以这是 MySQL 全文的限制还是别的全文方案也是只能搜索一个关键词才是快的?

    所以你们实现搜索某用户的文章是用的什么办法?

    Huliya1993
        1
    Huliya1993  
       Jan 4, 2023
    搜索文章用了 ES ,生成文章的时候同步一份给 ES 就完事了,还挺无脑方便的。
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Privacy   ·   Solana   ·   2926 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 23ms · UTC 10:24 · PVG 18:24 · LAX 03:24 · JFK 06:24
    ♥ Do have faith in what you're doing.