我刚看了一篇在SQL中提到"全文搜索"的帖子.
我只是想知道FTS和LIKE之间的区别是什么.我确实阅读了几篇文章,但找不到任何解释得很好的文章.
注意:
我可以使用像Pspell、Aspell或Hunspell这样的字典,但这种情况不适用于企业名称或城市。此外,我不想查询数据库以获取所有建议的更正(尤其是每 300 毫秒触发一次预输入)(有关这些词典的更多问题)
我可以使用补充搜索引擎,例如Elasticsearch或Sphinx,但我没有为此 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 源或修改字符集文件或添加新的排序规则。比如我以后想用减号(-)来过滤掉一些单词,就不行了。
撇号/单引号
双字母遗漏
潜在的解决方案:
我想根据整个标题名称和标题词搜索产品。可以LIKE使用UNION. 我的数据库title(charchar(550)) = Colorzone Men's Casual Wear Red Cotton Shirt不是全文——
PHP 和 MYSQL 的最佳搜索算法是什么?
但是我需要将搜索结果(第一:Cotton Shirt记录,第二 Cotton记录和第三:Shirt记录。不应显示混合的所有记录)作为单个查询
MYSQL 查询:例如:标题 =Cotton Shirt
SELECT title FROM zapstore_ecom_products WHERE title LIKE '%Cotton Shirt%' //Get Whole Title products.
UNION
SELECT title FROM zapstore_ecom_products WHERE title LIKE '%Cotton%' //Get list for first word Title products.
UNION
SELECT title FROM zapstore_ecom_products WHERE title LIKE '%Shirt%' //Get …Run Code Online (Sandbox Code Playgroud)