gpt4 book ai didi

php - 以度数符号存储,不用php SQL LIKE语句也能搜索

转载 作者:行者123 更新时间:2023-11-28 23:38:36 25 4
gpt4 key购买 nike

我在使用自己构建的搜索功能时遇到了一些问题。

我在 mysql 表中有一列名为:title (utf8_swedish_ci)

这是大约 20.000 个标题中的 2 个:

50° Riesling Réserve Trocken  
50° Parallel Riesling Trocken

有什么方法可以让用户搜索没有度数符号的 50 Riesling 或 50 Parallel 吗?

我的代码:

$search = str_replace("\'","’", $_GET['searchString']);
$search = htmlentities($search);
$search = esc_sql($search);
$search = trim($search);
if(!empty($_GET["searchString"])){
$str .= "`title` LIKE '%".$search."%' AND ";
}

SQL 语句(其中的一部分,关于此):

$res = $wpdb->get_results("SELECT * FROM searchtbl WHERE ".$str." ORDER BY ".$sortby." ".$sort." LIMIT 500");

作为一个额外的问题:是否有一些“简单”的方法可以让用户能够搜索 50 Riesling 并找到这两个项目? (它与很多标题相关,而不仅仅是这两个)

最佳答案

您有多个选项,您甚至可以组合这些选项以获得所需的输出。

  1. 在表中创建另一个字段,您在其中存储没有任何特殊字符的标题,例如 ° 并在两列上运行搜索,或者从搜索中删除特殊字符以及。如果您有 mysql v5.7.6 或更新版本,那么使用生成的列是一个理想的解决方案。

  2. 您可以在 where 标准中搜索时“即时”删除这些特殊字符。同样,生成的列可能是一种更快的解决方案。

  3. 使用全文索引和搜索。但是,您需要将默认的最小字长减少到 2,并且您可能还需要处理整理文件。 This SO topic包含有关此的更多信息。

  4. 您可以在 php 中将搜索字符串拆分为单词,例如使用 explode() 和 serach 搜索不在单个搜索条件中的单词,而是在单独的搜索条件中。

后两种方法的优势在于,如果以 50 雷司令为搜索条件,它们将找到这两条记录。

关于php - 以度数符号存储,不用php SQL LIKE语句也能搜索,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35063540/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com