使用 PHP 搜索包含 1<sup>3</sup> + 2<sup>2</sup>

我是新来的。我只有 PHP 和 Mysql 的基础知识。


我有一个数学表达式,例如:


[1 3 + 2 4 + 9 2 - x 1 x 2 ]


它存储在 MySQL 数据库中为:


[1<sup>3</sup> + 2<sup>4</sup> + 9<sup>2</sup> - x<sub>1</sub>x<sub>2</sub>].

我想使用输入字符串从 MySQL 数据库中搜索该列$str='1^3 + 2^4 + 9^2 - x_1x_2';。MySQL 列设置为全文索引,因此我需要使用 MATCH AGAINST 方法对其进行搜索。


更新:我在下面的应用程序中添加了相关代码。


我的问题是为什么 MySQL 查询返回 0。即使我更改输入字符串也会发生同样的事情。喜欢


$str=$_GET['search']; //$_GET['search'] is equal to '1<sup>3</sup> + 2<sup>4</sup> + 9<sup>2</sup> - x<sub>1</sub>x<sub>2</sub>'

//the $str contain the search string

$query = "(Select col1,col2,MATCH (col3) AGAINST ('".$str."' IN NATURAL LANGUAGE MODE) AS relevance from table_name WHERE MATCH (col3) AGAINST ('".$str."' IN NATURAL LANGUAGE MODE))";

$run = mysqli_query($connect, $query);

 $foundnum = mysqli_num_rows($run);

//$foundnum returning  0


慕的地10843
浏览 92回答 1
1回答

白板的微信

由于字符串1^3与 不同1<sup>3</sup>,因此没有 SQL 方法可以使它们匹配。此外,没有简单的 PHP 代码量来声明它们是相同的。您需要为“power”想出一个规范形式,并在表中的数据和搜索字符串中使用它。也许你应该选择“数学”表示来搜索1^3。您可以为 HTML 表示使用第二列1<sup>3</sup>。但是,还有一个问题。&nbsp;FULLTEXT索引使用由空格和标点符号分隔的“单词”。所以这些词是1,&nbsp;3, 和sup。更麻烦的是……&nbsp;FULLTEXT默认一个“单词”至少有 3 个字母。所以sup将是唯一的“词”。那么该怎么办?如果您可以决定规范形式,请参阅=、LIKE或REGEXP进行字符串比较,而不是FULLTEXT。
打开App,查看更多内容
随时随地看视频慕课网APP