我得到了levenshtein距离的代码,用于mysql格式"http://kristiannissen.wordpress.com/2010/07/08/mysql-levenshtein/"但是,如何在mysql中添加该函数?我正在使用xampp,我需要它在php中搜索.
我在mysql数据库中有大约2000行.
每行最多300个字符,包含一两句话.
我使用mysql内置的全文搜索来搜索这些行.
我想添加一个功能,以便在可能的情况下纠正拼写错误和意外错误拼写.
例如,如果有人在搜索框中输入"right shlder",则在执行搜索时这将等同于"右肩".
您对添加此类功能的最简单方法有何建议?是否值得添加某种外部搜索引擎,如lucene?(对于如此小的数据集来说,这似乎有点过分了.)或者是否有更简单的方法?
在此先感谢您的帮助.
我正在努力尝试自动分类短文,我正在试图弄清楚如何匹配相似的单词 - 例如,货架,绘画和重绘
我正在使用Porter词干分析算法,但它只对某些情况有帮助,并且只对单词的结尾有用(上面的两个例子都不能用它).
是否有一个算法或相关的单词列表可以帮助这样的事情(除了自己做?)
(我正在使用php,因此使用该语言的任何解决方案都会更有帮助.)
我有一个mySQL表,人们可以在其中添加他们的名字和兴趣.我想使用某种单词匹配,找到100%匹配或近似匹配.我听说过levenshtein距离,但不知道如何让它循环通过我的桌子.
$input = $_POST["interest"];
$result = mysql_query("SELECT interest_desc FROM interests");
Run Code Online (Sandbox Code Playgroud)
做了一些谷歌搜索,并达到了这一点
function closest($seed, $haystack){
$shortest = -1;
foreach ($haystack as $word){
$lev = levenshtein($seed, $word);
if ($lev == 0) {
$closest = $word; $shortest = 0; break;
}
if ($lev <= $shortest || $shortest < 0) {
$closest = $word; $shortest = $lev;
}
}
return $closest;
}
$array = mysql_fetch_row($result);
$closestmatch = closest($input,$array);
echo $closetmatch;
Run Code Online (Sandbox Code Playgroud) 例如,我想搜索一个单词' marple ',这应该返回带有近似或完全单词的行,如' marble ',' maple ',' marple '等...
如何在mysql查询中执行此操作?或者更好地给出单词建议,如果有的话?