gpt4 book ai didi

php - 在 MySQL 中全文搜索多列?

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

所以过去几天我一直在努力解决这个问题..我有音乐流派。由主柱和副柱分隔。摇滚/前卫摇滚等。我有它,所以它会搜索一栏,很好。但我希望它搜索任一列。在谷歌上寻找帮助。我发现理论上全文搜索应该可以做到这一点。我在主列和辅助列上都设置了全文索引。但我无法使其正常工作。

这是我适用于单列的代码:

    $query = sprintf("SELECT * FROM musicgenres WHERE secondary LIKE '%%%s%%' LIMIT 20", mysql_real_escape_string($_GET["q"]));

$arr = array();
$rs = mysql_query($query);

while($obj = mysql_fetch_object($rs)) {
$arr[] = $obj;
}

$json_response = json_encode($arr);

if($_GET["callback"]) {
$json_response = $_GET["callback"] . "(" . $json_response . ")";
}


$final = str_replace(genre_id, id, $json_response);
echo $final;
<小时/>

(以 JSON 格式返回结果)

我尝试按照本教程进行操作,我发现该教程以此为例:

 $term = "Search Term";

$sql = "SELECT *, MATCH(title, content) AGAINST('". $term ."') as score FROM pages WHERE MATCH (title, content) AGAINST('". $term ."') ORDER BY score DESC";
$query = mysql_query($sql);
<小时/>

问题似乎出在 SELECT 查询中。或者当我将它结合起来时。它会导致此行出现错误:

while($obj = mysql_fetch_object($rs)) {

我最近尝试的选择查询是:

$term = mysql_real_escape_string($_GET["q"]);

$sql = "SELECT *, MATCH(primary, secondary) AGAINST('". $term ."') as score FROM musicgenres WHERE MATCH (primary, secondary) AGAINST('". $term ."') ORDER BY score DESC";

我还尝试过:LIKE '%%%s%%'(这会更有用。因为部分匹配会很好)

最佳答案

我不是 100% 确定您在寻找什么,但如果您想搜索多个列,这样的操作应该有效:

"SELECT * FROM musicgenres WHERE secondary LIKE '%%%s%%' OR primary LIKE '%%%s%%' LIMIT 20"

希望这接近您正在寻找的内容。

关于php - 在 MySQL 中全文搜索多列?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9117439/

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