gpt4 book ai didi

php - Mysql 查询使用 OR 条件进行全文搜索

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

我有一个下拉列表,其中仅包含两个选项AndOr。选择这两个选项后将运行查询,但具体取决于选择。当选择 And 时,查询将发生更改。我的查询如下所示,

$sql = 
"SELECT distinct n.node_id, n.path,
n.title_tag as node_name,
n2.title_tag as tree_name,
MATCH (n.title_tag) AGAINST ('%s') as score
FROM nodes n
join trees t on (n.tree_id=t.tree_id and t.status='A' and t.workspace_id=%d)
join nodes n2 on (n2.node_id = t.tree_id)
left join node_links nl1 on (n.node_id=nl1.from_node_id and nl1.to_node_id='%s')
left join node_links nl2 on (n.node_id=nl2.to_node_id and nl2.from_node_id='%s')
WHERE n.node_id!='%s' and nl1.node_link_id is null and nl2.node_link_id is null
HAVING score > 0
ORDER BY score DESC";

请注意 MATCH AGAINST 部分,这是我要添加 AndOr 条件的位置。如果选择 And 条件时查询将使用 AND 逻辑匹配 node_name 并选择 Or 时,我该怎么做 条件查询将使用 OR 逻辑匹配 node_name。任何帮助都可以。谢谢。

最佳答案

AFAIU您想要根据前端选择的选项(存储在 $condition 中)添加条件的问题,如果是这样,请尝试以下代码:(未经测试)

switch($condition) {
case "AND" : $searchNode = "+$searchTerm"; break;
case "OR" :
default :
$searchNode = "$searchTerm"; break;
}

$final_search = "$searchTitle $searchNode";

$sql = "SELECT distinct n.node_id, n.path,
n.title_tag as node_name,
n2.title_tag as tree_name,
MATCH (n.title_tag,n.node_name)
AGAINST ($final_search IN BOOLEAN MODE) as score ..." ;

Reference

关于php - Mysql 查询使用 OR 条件进行全文搜索,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19058829/

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