使用FULLTEXT搜索支持表进行数据库搜索

时间:2017-03-21 09:53:26

标签: php mysql sql full-text-search full-text-indexing

我正在为REST API实现搜索功能,这是我第一次处理大型数据库搜索。

我的MySQL位置表包含以下列

| id | name | email | phone | postcode | address | verified |

用户可以按name, email, phone, postcode or address搜索位置。

输入搜索字符串不会分隔不同的字段,即只有一个输入文本框,并且该字符串与上面的每个可搜索字段匹配(这是故意要的)。

到目前为止我一直在做的是获取输入字符串并为每个可搜索列运行MATCH ... AGAINST查询,合并结果并返回。

但是,创建一个包含两列的支持索引表(location_query)并不是更好。

| location_id | match_query |

当添加位置时,我可以向location_query添加一个新行,其值为

0 | {NAME} {EMAIL} {PHONE} {POSTCODE} {ADDRESS}

然后只需在match_query列上运行FULLTEXT搜索?

这可行吗?

1 个答案:

答案 0 :(得分:0)

您尚未提供有关性能要求,数据量和当前用户负载的任何详细信息,但我建议使用搜索引擎(例如,Apache Solr)而不是RDBMS。 这允许对索引和搜索策略进行细粒度控制以及更好的性能。