我有一个位置搜索website对于一个城市,我们首先收集该城市所有可能类别的数据,如学校、学院、百货商店等,并将其信息存储在单独的表中,因为每个条目除了名称、地址和电话号码外都有不同的详细信息。
我们必须在网站中集成搜索,以便人们能够找到信息,因此我们构建了一个索引表,其中存储了同一类别的类别和相关关键字,如果搜索该类别,则可以获取该表。后来,我们添加了搜索姓名和地址的功能,并添加了另一个主表,其中包含所有表中的这些字段到一个地方。现在我的疑问如下
- 应用程序设计不合适,我们写了像 select * from master where name like "%$input%"这样的查询,由于我们的数据库是服务器端的 MYSQL 和 PHP,有什么建议可以改进吗关于系统的设计?
- 人们想要更多功能,例如拆分关键字并根据相关性对其进行排名等,是否有任何现成的框架可以在数据库上运行搜索。
- 我尝试在 MYSQL 中使用全文搜索,它对我来说似乎很有效,这样就足够了吗?
如果我错了,请纠正我,我研究过 Lucene 和 Google Custom Search,他们不是通过抓取现有网页并构建自己的索引来创建索引吗?我在 mysql 数据库上有一组表,我必须在其中应用搜索。我有什么选择?
最佳答案
解决你的观点:
使用 %input% 非常糟糕。这将导致每个查询都进行全表扫描。在任何负载量下,甚至在远程大型数据集上,您的数据库服务器都会阻塞。
单独使用 RDBMS 并不是一个好的解决方案。通过寻求单独的搜索解决方案,您正在寻找正确的位置。能够与 RDBMS 良好通信的东西是好的;在 RDBMS 中运行的东西不会满足您的需要。
MySQL 中的全文搜索适用于非常基本的关键字搜索,仅此而已。有用的范围极其有限 - 您需要一个高度可预测的使用模型来利用内置搜索。它被称为“搜索”,但它并不是大多数人所认为的真正的搜索方式。与我们期望的 Google 和 Bing 的搜索结果质量相比,它根本无法相比。从“搜索”这个词的意义上来说,它是另一回事 - 就像记事本与 Word 一样。它们都是需要输入的内容,仅此而已。
就处理搜索的单独系统而言,Lucene 非常好。本质上,Lucene 可以按照您希望的方式工作。您可以通过编程方式与其交互以插入可索引文档。同样,Google Appliance (不是 Google Custom Search )可以直接获得元提要,这些元提要公开您想要索引的任何内容,例如直接来自数据库的数据。
关于php - 在一个后台为MYSQL的网站上集成搜索,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1197999/