php - 使用 PHP 和 Mysql 进行相关性搜索

标签 php mysql search full-text-search sql-like

执行此操作的最佳方法是什么?

我有以下列:track_name、artist_name、album_name

我希望所有列都与搜索查询相匹配。以及匹配时的一些灵 active 。

mysql 之类的太严格了,即使是%XXX%。它匹配整个字符串,而不是各个部分。

最佳答案

您的 MySQL 查询可能有多个 OR 子句,搜索用户输入的每个空格分隔的单词。例如,用户搜索“Queens of the Stoneage”可能会在 SQL 中表示为 SELECT * FROMongs WHERE Artist_name LIKE "%Queens%"OR Artist_name LIKE "Stoneage"

但是,这可能是不可取的,因为以 % 开头的 LIKE 搜索效率低下,并且在大型数据库上可能会非常慢。

虽然我无法谈论性能影响,但您应该看看 natural language full-text searches 。这可能是您会发现的最有效的解决方案:

SELECT * FROM 歌曲 WHERE MATCH(track_name, Artist_name, album_name) AGAINST('Queens of the Stoneage' IN NATURAL LANGUAGE MODE);

确实存在一些 PHP 函数来确定文本字符串的相似性,但将这项工作保留在数据库中可能是最有效的(并且不会那么令人沮丧):

关于php - 使用 PHP 和 Mysql 进行相关性搜索,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7006209/

相关文章:

C代码,搜索功能

search - 高效搜索最近的地理位置

mysql - 高效的 MySQL 搜索

php - ErrorException 试图获取非对象的属性 'kode_buyer'

php - 警告 : mysql_fetch_array(): supplied argument is not a valid MySQL result - PHP

javascript - 使用 jQuery AJAX 请求 - POST 到 php

php - 日期时间还是时间戳?

php - 按日期有效扫描目录树

c++ - MySQL++ 的代码页相关问题

php - fsockopen PHP检查RDP的打开端口不起作用