小编mic*_*all的帖子

如何使用 PHP 和 MySQL 全文布尔模式为 MVP 实现自动更正/替代拼写搜索系统

注意:

  • 我可以使用像PspellAspellHunspell这样的字典,但这种情况不适用于企业名称或城市。此外,我不想查询数据库以获取所有建议的更正(尤其是每 300 毫秒触发一次预输入)(有关这些词典的更多问题

  • 我可以使用补充搜索引擎,例如ElasticsearchSphinx,但我没有为此 MVP 分配的财务或人力资源。正如在这个答案中所建议的,MySQL 全文应该足够了,而且不那么复杂。

可用技术:

MySQL 5.7 InnoDB,在所需字段上使用全文索引布尔模式,使用 php-fpm 的 PHP 7.0,使用 Centos 7 的 VPS,corejs-typeahead

目标:

我想从 MySQL 返回用户搜索的结果,无论是正确的搜索还是拼写错误的搜索。

常见问题示例:

连字符

  • 在部分搜索中搜索带有连字符“-”的单词很烦人。

潜在的解决方案:

  • 我必须将搜索查询包含在 "" 中以搜索短语(请参阅 [在此处输入链接描述] [来自 man 的示例]。仍然找不到名为 '"le dé-k-lé"' 的企业,因为to ft_min_word_len=3AND "de" 和 "le" 是停用词(在许多语言中过于频繁)

  • 我可以,但我不会进入以下解决方案,因为我不够熟练或这是不合适的。根据 MySQL 手册的建议修改 MySQL 源修改字符集文件添加新的排序规则。比如我以后想用减号(-)来过滤掉一些单词,就不行了。

撇号/单引号

  • 带有撇号的词经常在没有撇号的情况下搜索(尤其是在手机上)。例如,“A'trego”将被输入为“atrego”。它肯定会被全文索引遗漏,因为“A'trego”被认为是 2 个词“a”和“trego”

双字母遗漏

  • 带有双字母的单词经常被用户遗漏或拼错。例如,“Cerruti”可能拼错为“Cerutti”或“Cerruti”等。

潜在的解决方案:

  • 我可以使用 SOUNDEX() 但它主要是为英语设计的
  • 我可以使用 …

php mysql search full-text-search autocorrect

7
推荐指数
0
解决办法
851
查看次数

在 MySQL 中使用绑定参数作为用户定义变量是否安全?

问题

我知道使用准备好的语句可以防止注入,因为准备好的语句执行由两个阶段组成:准备和执行

好的,但我真的不明白如果将绑定参数值用作MySQL 中的用户定义变量会发生什么情况。

最初安全绑定的参数过程是否可以用于步骤 2 中的执行(以及注入)?

// The user input that may be the target for injection
$userInput = "input";

// STEP 1 -------------------
$q = "SET @param1 = :param1;";  

// Execute query to set mysql user-defined variables
$param = [
'param1'    => $userInput
];

$stmt = $pdo->prepare($q);
$stmt->execute($param);


// STEP 2 -------------------
// Query DB with User-Defined Variables
$q = "
SELECT ...
WHERE 
table.field1 = @param1 OR
table.field2 = @param1 OR
table.field3 = …
Run Code Online (Sandbox Code Playgroud)

php mysql pdo sql-injection prepared-statement

3
推荐指数
1
解决办法
313
查看次数

为什么“queueInputBuffer”中的“MediaCodec CodecException”仅发生在 Android API 29 上?

基本信息

目标SDK版本28

目标:课程的目标是在发送到我的服务器之前调整视频大小。

问题:应用程序仅在 API 29 上崩溃,无论是使用真实设备还是使用 AVD。例如,该代码在Pixel 2 API 28上运行良好,但在Pixel 2 API 29上运行不佳

源代码:我主要使用来自bigflake.com的示例代码。

错误信息(详细日志见下文):

E/AndroidRuntime: FATAL EXCEPTION: Thread-20
    Process: com.myapp.myapp, PID: 9189
    android.media.MediaCodec$CodecException: Error 0xfffffff3
        at android.media.MediaCodec.native_queueInputBuffer(Native Method)
        at android.media.MediaCodec.queueInputBuffer(MediaCodec.java:2450)
Run Code Online (Sandbox Code Playgroud)

我尝试过的 由于 的日志信息有限,我尝试从 更改为MediaCodec$CodecException,但没有成功。MediaCodecInfo.CodecCapabilities.COLOR_FormatSurfaceMediaCodecInfo.CodecCapabilities.COLOR_FormatYUV420Flexible


日志将显示最后两个缓冲周期。我希望你能看到一些有价值的东西。

无法在 *Pixel 2 API 29* 上运行的日志

D/VideoResolutionChanger: no audio encoder output buffer
D/VideoResolutionChanger: loop: V(true){extracted:49(done:false) decoded:45(done:false) encoded:43(done:false)} A(true){extracted:45(done:false) decoded:44(done:false) encoded:1(done:false) pending:-1} muxing:true(V:0,A:1)
D/VideoResolutionChanger: video decoder: returned input buffer: 3
    video …
Run Code Online (Sandbox Code Playgroud)

android video-encoding input-buffer mediamuxer android-mediacodec

3
推荐指数
1
解决办法
4016
查看次数