我正在为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搜索?
这可行吗?
答案 0 :(得分:0)
您尚未提供有关性能要求,数据量和当前用户负载的任何详细信息,但我建议使用搜索引擎(例如,Apache Solr)而不是RDBMS。 这允许对索引和搜索策略进行细粒度控制以及更好的性能。