所以我想将我网站上的搜索存储在数据库中,我希望它们是唯一的,即使单词的顺序对我来说并不重要,例如:
some words
和
words some
对我来说都是一样的,我只想更新上次搜索的时间。
那么有没有办法在 SQL(如 UNIQUE)中做到这一点,或者我应该在服务器端语言中找到解决方案?
并提前感谢。
我不知道是否有更好的方法来做到这一点,但我能想到的唯一方法是在 PHP 中你用空格分割字符串,然后按字母顺序排列:
$words = explode(" ", $keywords);
sort($words);
$sorted_keywords = implode(" ", $words);
然后,当您从数据库存储/搜索时,无论单词 WERE 的顺序如何,您都将始终使用相同的字符串。
$words = preg_split("\b", $words);
sort($words);
implode(" ", $words);
如果你肯定用空格分隔单词,你也可以在空格上爆炸,你也可以使用array_unique
。这将是一个列出搜索词的排序字符串。
我严重怀疑 DBMS 是否提供了这种开箱即用的功能。您需要以这样的方式规范您的搜索文本
normalize("some words") = normalize("words some")
然后您可以将规范化版本存储在数据库中,并在遇到导致相同规范化形式的不同搜索文本时对其进行更新。