任何人都知道如何搜索数据库中的部分单词。
例如 -
My String 二十一世纪福克斯
数据库列值 21st Century Fox
如何使用MySQL LIKE或LOCATE或任何其他查询获得结果?
我想要匹配的是 - " st Century Fox"
答案 0 :(得分:0)
你可能应该调查FULLTEXT
搜索;它的目的是在fox
中查找21st Century Fox
之类的内容。它涉及创建一个专用索引,然后使用MATCH()
谓词进行搜索。
但是理解21st
和Twenty-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)
一个简单的解决方案是将字符串分解为单词数并使用OR
和LIKE
进行搜索。在这种情况下。
$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);