pra*_*rat 3 mysql database search full-text-search
我打算通过一个网站实现数据库搜索 - 我知道mysql提供了全文搜索,但事实证明它不支持innodb引擎(我需要交易支持).其他选项使用sphinx或类似的索引应用程序.但是,它们需要对数据库结构进行一些重新分解,并且可能需要比我更多的时间来实现.
所以我决定采用每个表并将其所有相关列连接到一个新添加的QUERY列.此查询列还应从其他相关表的列中进行招募.
这完成后,我将使用要搜索的表的查询列上的'like'子句进行搜索以返回特定域(相关表组)的结果.
由于我的数据库预计不会太大(在最大的表中<100万行),我期待合理的查询时间.
有没有人同意这种方法或有更好的想法?
您将不满意使用LIKE和通配符的解决方案.它比使用全文搜索技术要慢几百或几千倍.
请参阅我的演示文稿MySQL中的实用全文搜索.
我建议不要将值复制到QUERY列中,而是将值复制到MyISAM表中,在该表中定义了FULLTEXT索引.您可以使用触发器来执行此操作.
您不需要将值连接在一起,只需要主键列和每个可搜索的文本列.
CREATE TABLE OriginalTable (
original_id SERIAL PRIMARY KEY,
author_id INT,
author_date DATETIME,
summary TEXT,
body TEXT
) ENGINE=InnoDB;
CREATE TABLE SearchTable (
original_id BIGINT UNSIGNED PRIMARY KEY, -- not auto-increment
-- author_id INT,
-- author_date DATETIME,
summary TEXT,
body TEXT,
FULLTEXT KEY (summary, body)
) ENGINE=MyISAM;
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1614 次 |
| 最近记录: |