gpt4 book ai didi

MySQL 搜索查询,按最佳匹配对结果进行排序

转载 作者:行者123 更新时间:2023-11-29 09:20:06 25 4
gpt4 key购买 nike

我正在网站内开发一个搜索引擎,访问者可以在其中提供一些关键字,然后搜索引擎对数据表执行一些查询。

我知道如何查询表,但是如何构建一个查询来提供完整的结果列表以及数据表中每个匹配行的出现次数。

所以说,我有一个简单的表格,例如:

id | title | desc
-----------------
1 | title 1 | some text with some text provding the user most likely no interesting info.

2 | title 2 | some other text

3 | title 3 | some third text saying some other crap.

我想要实现的是:当用户搜索“某些文本”时,我得到如下结果:

id | title | desc | noOfMatches
-------------------------------
1 | title 1 | ... | 4

2 | title 3 | ... | 3

3 | title 2 | ... | 2

有人可以帮我解决这个问题吗?我不知道如何创建一个可以计算编号的查询。查询中所提供单词的出现次数...

最佳答案

使用全文搜索:

CREATE TABLE t_ft (id INT NOT NULL PRIMARY KEY, words VARCHAR(255) NOT NULL) ENGINE=MyISAM DEFAULT CHARSET='utf8';

CREATE FULLTEXT INDEX fx_ft_words ON t_ft (words);
INSERT
INTO t_ft (id, words)
VALUES (1, 'some text with some text provding the user most likely no interesting info');

INSERT
INTO t_ft (id, words)
VALUES (2, 'some other text');

INSERT
INTO t_ft (id, words)
VALUES (3, 'some third text saying some other crap');

INSERT
INTO t_ft
SELECT id + 3, 'complete nonsense'
FROM t_source
LIMIT 1000;

SELECT *, MATCH(words) AGAINST('"some text"') AS relevance
FROM t_ft
WHERE MATCH(words) AGAINST('"some text"')
ORDER BY
relevance DESC;

MATCH 将返回您可以在 ORDER BY 中使用的排名。

关于MySQL 搜索查询,按最佳匹配对结果进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2253342/

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