【发布时间】:2011-10-08 17:04:53
【问题描述】:
希望为搜索查询改进这个 mysql 选择语句:
Select * from table WHERE ( user = '$search_query'
OR user LIKE '$search_query %'
OR keyword LIKE '$search_query'
OR tag LIKE '$search_query'
OR tag LIKE '% $search_query'
OR tag LIKE '% $search_query%'
OR tag LIKE '$search_query%'
OR REPLACE(question, ',' ,'') LIKE '$search_query %'
OR REPLACE(question, ',' ,'') LIKE '% $search_query'
OR REPLACE(question, ',' ,'') LIKE '% $search_query %'
OR REPLACE( REPLACE( REPLACE( REPLACE( REPLACE( REPLACE( REPLACE(question, '\'', ''), ',', ''), '.',''), ':',''), ';',''), '!',''), '?','') LIKE '%$search_query%'
)
之所以这样分解,是因为假设有人搜索“艺术”,我不希望它也显示“心脏”的结果。
我确实需要这些相同的功能,但运行的资源更少。
【问题讨论】:
-
你试过 FULLTEXT 索引吗?
-
您能解释一下为什么要为
$search_query %、% $search_query和% $search_query %制作三个不同的案例吗? -
上面已经解释过了,例如,如果我搜索“art”并只使用 '%$search_query%' 那么它将返回“art”的每个实例,例如“心脏病发作”,我想避免那个。
标签: php mysql database phpmyadmin