Mysql 如何在全文搜索中不使用空格分隔搜索所有文本
我有一个全文搜索的查询Mysql 如何在全文搜索中不使用空格分隔搜索所有文本,mysql,sql,Mysql,Sql,我有一个全文搜索的查询 select title from products where MATCH (title) AGAINST ('green book') 但此查询返回此产品 +-------------+------------------+ | id | title | ---------------------------------- | 34 | green book | ----------------
select title from products where MATCH (title) AGAINST ('green book')
但此查询返回此产品
+-------------+------------------+
| id | title |
----------------------------------
| 34 | green book |
----------------------------------
| 84 | green shirt |
----------------------------------
| 22 | red book |
----------------------------------
我使用Like%操作返回正确的数据,但我需要排名功能和更好的性能,因为此列的长度超过2000
我的预期产出:
+-------------+------------------+
| id | title |
----------------------------------
| 34 | green book |
----------------------------------
首先,你很幸运,你的搜索词都不是停止词或太短 第二,您需要回顾如何使用。文本中的任何匹配都将返回一个大于0的值-在您的情况下,是两个单词中的一个还是两个。拥有一个单词的多个副本可能会提高分数 您可以使用+-修改搜索中使用的单词,这需要它们的存在。Luuk在评论中指出,除了需要布尔模式外:
where MATCH (title) AGAINST ('+green +book' in boolean mode)
首先,你很幸运,你的搜索词都不是停止词或太短 第二,您需要回顾如何使用。文本中的任何匹配都将返回一个大于0的值-在您的情况下,是两个单词中的一个还是两个。拥有一个单词的多个副本可能会提高分数 您可以使用+-修改搜索中使用的单词,这需要它们的存在。Luuk在评论中指出,除了需要布尔模式外:
where MATCH (title) AGAINST ('+green +book' in boolean mode)
这里有两种可能twpo是如何做到这一点的
这里有两种可能性twpo是如何做到的
DBFIDLE从与“+绿色+书籍”匹配的产品中选择名称从与“+绿色+书籍”匹配的产品中选择名称感谢您的解释感谢您的解释 ✓ ✓
SELECT * FROM products WHERE match(title) against('+green +book' IN BOOLEAN MODE)
AND title like '%green book%'
id | title
-: | :---------
34 | green book
SELECT * FROM products WHERE match(title) against('"green book"' IN BOOLEAN MODE)
id | title
-: | :---------
34 | green book