展望改善搜索查询这个mysql的select语句:有什么方法可以改善这个长长的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索引? – Wrikken
您能否解释为什么您为'$ search_query%','%$ search_query'和'%$ search_query%'做出三种不同情况的原因? – dave
这是上面解释的,例如,如果我搜索“艺术”,只是使用'%$ search_query%',那么它会返回每个“艺术”的实例,如“心脏病发作”,我想避免这种情况。 – user761479