gpt4 book ai didi

mysql - MySQL中如何根据相似度进行匹配排序?

转载 作者:可可西里 更新时间:2023-11-01 07:04:55 25 4
gpt4 key购买 nike

目前,我正在做一个搜索功能。假设在我的数据库中,我有这些数据:

  • 关键字1
  • 关键字2
  • 关键字3
  • 关键点
  • key

然后用户输入:“Key”作为要搜索的关键字。这是我当前的查询:

SELECT * FROM data WHERE (
data_string LIKE '$key%' OR
data_string LIKE '%$key%' OR
data_string LIKE '%$key'
)

基本上,我有两个问题:

  1. 如何按相似度排序(order by)。在上面的例子中,我想要“Key”作为我的第一个结果。我当前的结果是:Keyword1、Keyword2、Keyword3、Keysomething 和 Key

  2. 我的 SQL 查询只搜索“data_string”列,如果我想搜索其他列怎么办?我需要做这样的事情吗:

SELECT * FROM data WHERE (
data_string LIKE '$key%' OR
data_string LIKE '%$key%' OR
data_string LIKE '%$key'
) OR (
data_other LIKE '$key%' OR
data_other LIKE '%$key%' OR
data_other LIKE '%$key'
) -- ...

有比 Q2 更好/更快的查询吗?

最佳答案

我不确定 LIKE 是否是执行此操作的正确方法。如果您需要在文本中搜索关键字并按相关性分数对结果进行排序,您应该使用 MySQL Full-Text indexMySQL Full-text Search functions .很抱歉,如果这让您远离您实际尝试做的事情,但我建议您看一看。 MySQL 引用手册中的一些引用:

1) 如何对表的多列创建全文索引

mysql> CREATE TABLE articles (
-> id INT UNSIGNED AUTO_INCREMENT NOT NULL PRIMARY KEY,
-> title VARCHAR(200),
-> body TEXT,
-> FULLTEXT (title,body)
-> );

2)样本数据

mysql> INSERT INTO articles (title,body) VALUES
-> ('MySQL Tutorial','DBMS stands for DataBase ...'),
-> ('How To Use MySQL Well','After you went through a ...'),
-> ('Optimizing MySQL','In this tutorial we will show ...'),
-> ('1001 MySQL Tricks','1. Never run mysqld as root. 2. ...'),
-> ('MySQL vs. YourSQL','In the following database comparison ...'),
-> ('MySQL Security','When configured properly, MySQL ...');

3) 在多列中搜索关键字并显示结果 + 分数的示例查询:

mysql> SELECT id, body, MATCH (title,body) AGAINST
-> ('Security implications of running MySQL as root') AS score
-> FROM articles WHERE MATCH (title,body) AGAINST
-> ('Security implications of running MySQL as root');
+----+-------------------------------------+-----------------+
| id | body | score |
+----+-------------------------------------+-----------------+
| 4 | 1. Never run mysqld as root. 2. ... | 1.5219271183014 |
| 6 | When configured properly, MySQL ... | 1.3114095926285 |
+----+-------------------------------------+-----------------+

关于mysql - MySQL中如何根据相似度进行匹配排序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2854930/

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