gpt4 book ai didi

php - MySQL 撇号-如何使用 MATCH/AGAINST 转义并返回正确的结果

转载 作者:行者123 更新时间:2023-11-29 14:41:15 25 4
gpt4 key购买 nike

我有一个类似这样的表:

TABLE BOOKS
ID TITLE SUBTITLE
------------------------------------
1 Don't Forget
2 Twenty/Twenty How To Subtitle
3 Red Riding Hood Another Subtitle
4 The Three Bears
5 The Threev Bears

MySQL 是:

SELECT * FROM books WHERE MATCH (titl, subt) AGAINST ('+don\'t*' IN BOOLEAN MODE)

此查询为我返回(在 phpMyAdmin 中,我仍然不确定如何在 PHP 中转义撇号)以下内容:

   ID  TITLE
-------------------------------
1 Twenty/Twenty
2 The Threev Bears

我不确定为什么我会得到“三只熊”,而不是“三只熊”? “三”是一个被忽视的词吗?

另外,为什么我得到的是“二十/二十”,而不是“不要忘记”?这是我想要的唯一结果。

感谢您的帮助!

最佳答案

您在这里有几个问题,所以让我尝试解决这些问题。

首先,你是对的,确实是一个被忽视的词。默认情况下,MySQL 有一个列表 ignored or "stop" words哪些没有索引。你可以调整这个。这样做的目的是避免索引中出现非常常见的单词,这些单词将返回大部分结果。

要转义 PHP 中的字符,您确实应该使用参数化查询,或者至少使用 msql_real_escape_string。 Here's a great SO post on the subject

最后,您得到 Twenty/Twenty 而不是 Don't忘记 的原因是因为 Don't 也是停用词。我相信 TwentyTwenty 与 t* 相匹配。

关于php - MySQL 撇号-如何使用 MATCH/AGAINST 转义并返回正确的结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7947854/

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