2017-03-21 87 views
-1

我正在实现REST API的搜索功能,这是我第一次处理大型数据库搜索。使用支持表进行FULLTEXT搜索的数据库搜索

我的MySQL位置表有以下几列

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

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

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

我到目前为止一直在做的事情是采取输入字符串并运行匹配...针对每个可搜索列的查询,合并结果并返回。

但是,我不会创建一个支持索引表(location_query),它有两列。

| location_id | match_query |

,当一个位置加入,我可以添加一个新行到具有类似

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

,然后只需运行在match_query列一个全文检索的值location_query?

请问这项工作?

回答

0

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

+0

嗨,谢谢你的回答。目前我没有任何具体的性能要求,现在只是嘲笑数据,这不是一个专业的应用程序,而是一个学习项目,这意味着用户负载也没有。我主要试图瞄准可扩展性。我不知道数据库搜索引擎,并会开始研究它们。 非常感谢 – WiserTheBassist

+0

@WiserTheBassist,您可以从Apache Solr开始,它对于具有描述性文档和社区的初学者来说稳定而且非常友好。 –

+0

是的,我一直在研究它,但是我在一个共享主机计划和限于cPanel,所以我不相信我可以安装Apache Solr或任何其他数据库搜索引擎。 – WiserTheBassist