每个人。
我使用MySQL数据库并面临全文搜索问题。我将我的桌子转换成了MyISAM。
这是我的查询..
$inputwords=" balu text ama som" (// input words by user in a single input box)
$result=SELECT * FROM my table Where MATCH (data, remark, purpose) AGAINST ('$inputwords' IN BOOLEAN MODE);
它为所有行提供任何输入字的完全匹配。
任何帮助......请。
答案 0 :(得分:0)
要获取FullText LIKE
中的MATCH() AGAINST()
行为,您必须使用*
作为AGAINST,这相当于使用%
作为LIKE。我的想法是拥有这样的整个字符串:
$inputWords = "*balu* *text* *ama* *som*";
以下是代码:
$inputWords = "balu text ama som"; // input words by user in a single input box
// Create array of words by splitting with space char
$keywords = explode(" ", $inputWords);
$words = '';
foreach($keywords as $key => $value) {
// concatenate all words following by space, and add * at start and end of the word
$words .= '*'.$value.'*';
// add space only if it is not the last word
if($key < count($keywords) - 1)
$words .= ' ';
}
然后你可以拥有你的:
$result=SELECT * FROM my table Where MATCH (data, remark, purpose) AGAINST ('$inputwords' IN BOOLEAN MODE);
单词“balu”将匹配baluch,balusahi,hotbalu。
我不知道它是如何降低性能的,但它仍然比我服务器中的Like '%word%'
快。