我有一个搜索引擎。当用户输入搜索关键字时,我必须从表格中选择一些数据。
我想找到'LIKE'的替代品:
SELECT id,text FROM example WHERE text LIKE '$search'
因为文本列中通常包含大量单词,而搜索词总是包含几个单词,所以我得不到准确的结果。 还有其他方法吗?
答案 0 :(得分:3)
它被称为全文索引,但目前它在InnoDB中不受支持,仅在MyISAM中。另一种方法是使用第三方索引,如Lucene,Solr(在Lucene上提供Web服务访问),Sphinx ......
答案 1 :(得分:0)
如果您的表格是MyISAM,则可以启用全文搜索:
ALTER TABLE table ADD FULLTEXT idx_text (`text`);
答案 2 :(得分:0)
您可以查看MySQL Fulltext机制,它以相当简单易用的方式提供自然语言搜索。
答案 3 :(得分:0)
通常,搜索引擎使用树数据结构进行快速查找,使用某种图形来加权搜索结果。也许你想要研究一个特里数据结构和空间填充曲线。如果要比较2个文档,后者很有用。例如,如果您对所有单词进行排序和计数,则可以执行热图。