【问题标题】:Strange mysql behaviour with fulltext search on id 1在 id 1 上进行全文搜索的奇怪 mysql 行为
【发布时间】:2021-08-25 17:08:12
【问题描述】:

我有一个包含数千条记录的表 (INNODB db),并且有些列是全文索引的。我在布尔模式下使用全文,它工作得很好,除了 id 为 1 的行。即使搜索的单词/s 存在于索引列中,它总是显示相关性为 0,并且在其他行上经常找到该单词。我已经检查了停用词,但这不是问题。就像全文搜索在 id 为 1 的行上是盲目的。 有什么建议吗?

行为示例:

SELECT *,  MATCH(full_name, short_name, long_description, summary, model) AGAINST("snom" IN BOOLEAN MODE) as relevance FROM product_sheets

结果:

id full_name short_name model long_description summary relevance
1 Snom phone black 12 lines Snom phone D385 Snom phone .. Snom, phone 0
2 Snom phone blue 12 lines Snom phone D385 Snom phone .. Snom, phone 38.311..
.. .. .. .. .. .. ..

全文索引应用于sn-p中显示的列。

【问题讨论】:

  • 多少行中有“snom”?

标签: mysql full-text-search innodb


【解决方案1】:

(这可能会或可能不会修复索引。请尝试一下。)

pageOPTIMIZE TABLE

在对属于 InnoDB 表中的 FULLTEXT 索引的列执行大量插入、更新或删除操作之后。首先设置配置选项 innodb_optimize_fulltext_only=1。要将索引维护周期保持在合理的时间,请设置 innodb_ft_num_word_optimize 选项以指定要在搜索索引中更新多少单词,并运行一系列 OPTIMIZE TABLE 语句,直到搜索索引完全更新。

(请报告它是否解决了您的问题。)

【讨论】:

    【解决方案2】:

    我无法重现您的问题,可能是您正在使用的版本,请尝试更新到可用的最新版本

    CREATE TABLE product_sheets
        (`id` int, `full_name` varchar(27), `short_name` varchar(12)
        , `model` varchar(4), `long_description` varchar(15), `summary` varchar(13)
        ,FULLTEXT (full_name, short_name, long_description, summary, model))
    ;
        
    INSERT INTO product_sheets
        (`id`, `full_name`, `short_name`, `model`, `long_description`, `summary`)
    VALUES
        (1, '"Snom phone black 12 lines"', '"Snom phone"', 'D385', '"Snom phone .."', '"Snom, phone"'),
        (2, '"Snom phone blue 12 lines"', '"Snom phone"', 'D385', '"Snom phone .."', '"Snom, phone"')
    ;
    
    SELECT *,  MATCH(full_name, short_name, long_description, summary, model) AGAINST("snom" IN BOOLEAN MODE) as relevance FROM product_sheets
    
    编号 |全名 |短名 |型号 |长描述 |总结 |关联 -: | :---------------------------- | :----------- | :---- | :--------------- | :------------ | -------------------------: 1 | 《snom手机黑12线》 | “snom电话” | D385 | “Snom 电话..” | “Snom,电话” | 0.000000007543713209656744 2 | 《snom手机蓝12线》 | “snom电话” | D385 | “Snom 电话..” | “Snom,电话” | 0.000000007543713209656744

    db小提琴here

    【讨论】:

    • 感谢您的努力
    • InnoDB 的 FULLTEXT 似乎经常需要刺激一下。
    猜你喜欢
    • 2013-11-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-07-12
    • 2012-04-12
    • 2015-09-25
    • 2017-02-12
    • 1970-01-01
    相关资源
    最近更新 更多