MySQL - 部分搜索

时间:2014-12-09 13:45:36

标签: php mysql sql-like

任何人都知道如何搜索数据库中的部分单词。

例如 -

My String 二十一世纪福克斯

数据库列值 21st Century Fox

如何使用MySQL LIKE或LOCATE或任何其他查询获得结果?

我想要匹配的是 - " st Century Fox"

3 个答案:

答案 0 :(得分:0)

你可能应该调查FULLTEXT搜索;它的目的是在fox中查找21st Century Fox之类的内容。它涉及创建一个专用索引,然后使用MATCH()谓词进行搜索。

但是理解21stTwenty-first是等价的是一项更复杂的任务。这涉及同义词或其他知识来源的列表。如果你必须这样做,你应该调查Sphinx或Lucene。

答案 1 :(得分:0)

使用Soundex函数campare这两个字符串...

<?php
$str = "Twenty-first Century Fox";
$str1 = "21st Century Fox";
echo soundex($str);
echo soundex($str1);
?>

答案 2 :(得分:-1)

一个简单的解决方案是将字符串分解为单词数并使用ORLIKE进行搜索。在这种情况下。

$keyword  = 'Twenty-first Century Fox';
$keywords = explode($keyword,' ');

$keySearch = array();
foreach ($keywords as $keyword){
    $keySearch[] = 'column LIKE \'%'.$keyword.'%\'';
}

$query = 'SELECT * FROM tableName WHERE '.implode(' OR ',$keySearch);