1

我有一个爆炸的搜索字符串,我需要查看它的任何或所有部分是否与 mysql DB 表中的条目匹配。

如果用户搜索“pour house greensboro”之类的内容,则“pour house”将匹配表中的条目。但是搜索也可以是“$ 1 beer pour house greensboro,或者其他类似的东西,并且以任何顺序,所以我需要将搜索字符串的每个部分放在一起并检查它是否与数据库中的内容匹配

所以,如果分解字符串的部分只是数字,那么我需要像这样检查它:
0 + 1 + 2 + 3 + 4
0 + 1 + 2 + 3
0 + 1 + 2
0 + 1
0
1 + 2 + 3 + 4
1 + 2 + 3
1 + 2
1
2 + 3 + 4
2 + 3
2
3 + 4
3
4

字符串可能多于或少于 5 个部分

有什么方法可以轻松做到这一点?

4

4 回答 4

2

我想出了如何做到这一点,直到现在才想到更新这个......

(for $i=0; $i < count($search_string); $i++){
    $output = '';
    (for $a=$i; $a < count($search_string); $a++){
        $output = $output." ".$search_string[$a];
    }
}
于 2012-04-29T19:55:39.013 回答
1

虽然 %LIKE% 会起作用,但它会很慢。您可能想改用 MySQL 的全文搜索功能。只是谷歌一些教程:)

于 2012-04-04T21:28:54.460 回答
0

好吧,您总是可以将分解后的字符串放在一个数组中,并在数据库中为每个数组值进行查询搜索。即 select * from table where data = array[$x];

于 2012-04-04T21:25:19.580 回答
0

使用“%LIKE%”:

SELECT *
  FROM MyTable
 WHERE MyField LIKE '%SearchKeyword1%'
    OR MyField LIKE '%SearchKeyword2%'
    OR MyField LIKE '%SearchKeyword3%'
...
于 2012-04-04T21:27:10.600 回答