【发布时间】:2013-04-21 07:26:22
【问题描述】:
对这个有一点帮助,这里是它的详细信息
[Products]
id int
name text
category
color
问题是颜色字段的值,示例值是:
GOLDREDGOLD-REDGOLD/REDBLUE/GREEN-REDWHITE GOLD-YELLOW/ORANGE
我可以使用一个基本函数来清理搜索查询,例如这个示例
"select * from products where color=".cleanstring($stringval)." limit 1";
function cleanstring($var) {
$newtext = $var;
$newtext = preg_replace("/[^a-zA-Z0-9\s]/", "", $newtext);
$newtext = str_replace(" ", "", $newtext);
$newtext = strtoupper($newtext);
return $newtext;
}
问题在于内容。这是成千上万条记录,没有任何形式的命名约定标准。
我想选择那些值与我的cleanstring() 相似的记录。
例子:
Query = GOLDRED
可以选择
GOLD-REDGOLD REDGOLDREDGOLD/REDGOLDRED
您可以推荐任何解决方案吗?代码在 PHP/MySQL 中。
【问题讨论】:
-
你试过
LIKE子句LIKE '%GOLDRED%' -
我试过了,问题是它无法选择带有连字符、斜线和空格的那些。
-
对mysql中的
soundex()函数不是很熟悉,但是你试过了吗? -
没试过soundex(),我查过soundex,它看起来很有趣,但有点不同。
-
您必须使用颜色列表才能获得 GOLDRED 或其他单词的断点,请参阅我的回答