gpt4 book ai didi

php - InnoDB 表中 MySQL 全文的替换相关性排序?

转载 作者:行者123 更新时间:2023-11-29 01:34:00 26 4
gpt4 key购买 nike

我正在使用 MySQL InnoDB 并希望对某些列进行全文搜索。按相关性排序结果的最佳方式是什么?

我正在尝试做类似的事情:

SELECT columns,   
(LENGTH(column_name) - LENGTH(REPLACE(column_name, '%searchterm%', ''))) AS score
FROM table
WHERE column_name LIKE '%searchterm%'
ORDER BY score

然而,一旦我开始搜索超过 1 列或使用多个关键字,这将变得相当复杂。我已经有几个连接发生,所以简化了上面的查询。

谁能提出更好的方法?我不想使用任何第三方软件,如 Sphinx 等

最佳答案

如果您不想使用其他引擎,您可以创建 InnoDB 表的“影子”MyISAM 副本,并对其运行全文搜索。在 InnoDB 表上使用一些适当的触发器,您可以相对容易地更新 MyISAM 副本。为了防止 InnoDB 端记录消失的可能性,对 InnoDB 表进行回联。像这样的东西:

SELECT MATCH(myisamtable.field1, myisamtable.field2, myisamtable.field3)
AGAINST ('search terms') AS relevance,
mysitamtable.field1, myisamtable.field2, myisamtable.field3
FROM myistamtable
RIGHT JOIN innodbtable ON myistamtable.commonID = innodbtable.commonID
WHERE (innodbtable.commonID IS NOT NULL) AND (MATCH(myisamtable.field1, myisamtable.field2, myisamtable.field3) AGAINST ('search terms') IN BOOLEAN MODE)
ORDER BY relevance DESC;

关于php - InnoDB 表中 MySQL 全文的替换相关性排序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2545827/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com