首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在MySQL中的全文搜索前添加一个*(星号

在MySQL中的全文搜索前添加一个*(星号
EN

Stack Overflow用户
提问于 2013-05-24 01:39:26
回答 2查看 2.9K关注 0票数 5

我知道星号是一个通配符,可以附加到全文搜索单词的末尾,但是如果我搜索的关键字是后缀怎么办?例如,我希望能够搜索"ames“并返回包含姓名"james”的结果。这是我当前的查询,它不能工作,因为你不能在全文搜索前加上星号。

代码语言:javascript
运行
复制
SELECT * FROM table WHERE MATCH(name, about, address) AGAINST ("*$key*" IN BOOLEAN MODE)

我会简单地改用LIKE,但对于我的数据库大小来说,它太慢了。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2016-10-01 03:12:11

您可以做的是使用全文搜索索引在数据库中创建另一个列,这个新列应该具有您尝试搜索的列的反向字符串,您将反向搜索查询并使用它在反向列上进行搜索,以下是查询的外观:

代码语言:javascript
运行
复制
SELECT * FROM table WHERE MATCH(column1) AGAINST ("$key*" IN BOOLEAN MODE) OR MATCH(reversedColumn1) AGAINST ("$reveresedkey*" IN BOOLEAN MODE)

  • the first condition MATCH(column1) AGAINST ("$key*" IN BOOLEAN MODE) example:reversedColumn1==>Jmaes $reveresedkey*==>ames*将搜索以ames ==>
  • seconds MATCH(reversedColumn1) AGAINST ("$reveresedkey*" IN BOOLEAN MODE)开头的单词示例:reversedColumn1==>semaJ $reveresedkey*==>sema*将搜索以ames结尾的单词

如果你的文本很短,这可能不是一个坏主意:

票数 8
EN

Stack Overflow用户

发布于 2013-08-07 18:16:54

由于MySQL的限制,无法执行此操作。值是从左到右索引的,而不是从右到左的。如果你想在搜索字符串前加上通配符,你必须坚持使用LIKE。

票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/16720443

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档