1

所以我想将我网站上的搜索存储在数据库中,我希望它们是唯一的,即使单词的顺序对我来说并不重要,例如:

some words

words some

对我来说都是一样的,我只想更新上次搜索的时间。

那么有没有办法在 SQL(如 UNIQUE)中做到这一点,或者我应该在服务器端语言中找到解决方案?

并提前感谢。

4

3 回答 3

3

我不知道是否有更好的方法来做到这一点,但我能想到的唯一方法是在 PHP 中你用空格分割字符串,然后按字母顺序排列:

$words = explode(" ", $keywords);
sort($words);
$sorted_keywords = implode(" ", $words);

然后,当您从数据库存储/搜索时,无论单词 WERE 的顺序如何,您都将始终使用相同的字符串。

于 2012-09-25T11:12:38.590 回答
1
$words = preg_split("\b", $words);
sort($words);
implode(" ", $words);

如果你肯定用空格分隔单词,你也可以在空格上爆炸,你也可以使用array_unique。这将是一个列出搜索词的排序字符串。

于 2012-09-25T11:10:58.403 回答
0

我严重怀疑 DBMS 是否提供了这种开箱即用的功能。您需要以这样的方式规范您的搜索文本

normalize("some words") = normalize("words some")

然后您可以将规范化版本存储在数据库中,并在遇到导致相同规范化形式的不同搜索文本时对其进行更新。

于 2012-09-25T11:11:41.200 回答