我正在尝试在我的MySQL数据库上进行基本的全文搜索 - 这是我正在使用的表格:
删除了表格
任何输入都会受到赞赏,因为我之前没有使用全文搜索(或索引此事!)
由于
编辑:
我选择使用FULLTEXT
,因为LIKE
搜索的速度很慢 - 会有很多这些搜索正在运行,因为这是针对javascript自动完成类型的事情。使用LIKE
是否可行?我被告知反对它。 (我提出这个问题是因为所有答案都说使用LIKE
而不是解决我的实际问题)
答案 0 :(得分:2)
MySQL全文搜索功能有限且搜索速度相对较慢。我建议使用外部全文搜索引擎,例如Solr或Sphinx来进行此类查询。我不熟悉Solr,但是对于Sphinx,您可以在配置文件中使用支持的前缀索引以及enable_star选项。
以下是how to replace MySQL FT with Sphinx的示例。您还可以将Sphinx用于分面搜索,相关文档搜索和其他有用的东西。
希望这有帮助。
答案 1 :(得分:1)
使用LIKE
命令并使用百分号(%
)作为通配符:
SELECT user_id, username, first_name, last_name
FROM users
WHERE (username LIKE 'Sav%')
OR (email LIKE 'Sav%')
OR (first_name LIKE 'Sav%')
OR (last_name LIKE 'Sav%');
答案 2 :(得分:1)
你在这里混合你的比喻。您想要使用FULLTEXT是有充分理由的,然后使用LIKE中的语法。
尝试在没有通配符的情况下搜索简单的“savo”,看看是否可以接受。
使用Mysql FULLTEXT搜索BTW 2大问题:
如果没有返回并且弄乱cnf(我认为它是4,你需要检查这个),它不会对少于4个字母的反应作出反应
如果结果集计数大于可用总行数的50%,则表示搜索失败,并且不返回任何内容。值得记住的是,只测试12行,并说它们都有test
字样。哎哟;)
答案 3 :(得分:-1)
我认为你正在尝试做这样的事情:
select * from users where (
username like ('Sav%')
or email like ('Sav%')
or first_name like ('Sav%')
or last_name like ('Sav%') );