php - 在一个后台为MYSQL的网站上集成搜索

标签 php mysql search search-engine

我有一个位置搜索website对于一个城市,我们首先收集该城市所有可能类别的数据,如学校、学院、百货商店等,并将其信息存储在单独的表中,因为每个条目除了名称、地址和电话号码外都有不同的详细信息。

我们必须在网站中集成搜索,以便人们能够找到信息,因此我们构建了一个索引表,其中存储了同一类别的类别和相关关键字,如果搜索该类别,则可以获取该表。后来,我们添加了搜索姓名和地址的功能,并添加了另一个主表,其中包含所有表中的这些字段到一个地方。现在我的疑问如下

  • 应用程序设计不合适,我们写了像 select * from master where name like "%$input%"这样的查询,由于我们的数据库是服务器端的 MYSQL 和 PHP,有什么建议可以改进吗关于系统的设计?
  • 人们想要更多功能,例如拆分关键字并根据相关性对其进行排名等,是否有任何现成的框架可以在数据库上运行搜索。
  • 我尝试在 MYSQL 中使用全文搜索,它对我来说似乎很有效,这样就足够了吗?

如果我错了,请纠正我,我研究过 Lucene 和 Google Custom Search,他们不是通过抓取现有网页并构建自己的索引来创建索引吗?我在 mysql 数据库上有一组表,我必须在其中应用搜索。我有什么选择?

最佳答案

解决你的观点:

  1. 使用 %input% 非常糟糕。这将导致每个查询都进行全表扫描。在任何负载量下,甚至在远程大型数据集上,您的数据库服务器都会阻塞。

  2. 单独使用 RDBMS 并不是一个好的解决方案。通过寻求单独的搜索解决方案,您正在寻找正确的位置。能够与 RDBMS 良好通信的东西是好的;在 RDBMS 中运行的东西不会满足您的需要。

  3. MySQL 中的全文搜索适用于非常基本的关键字搜索,仅此而已。有用的范围极其有限 - 您需要一个高度可预测的使用模型来利用内置搜索。它被称为“搜索”,但它并不是大多数人所认为的真正的搜索方式。与我们期望的 Google 和 Bing 的搜索结果质量相比,它根本无法相比。从“搜索”这个词的意义上来说,它是另一回事 - 就像记事本与 Word 一样。它们都是需要输入的内容,仅此而已。

就处理搜索的单独系统而言,Lucene 非常好。本质上,Lucene 可以按照您希望的方式工作。您可以通过编程方式与其交互以插入可索引文档。同样,Google Appliance (不是 Google Custom Search )可以直接获得元提要,这些元提要公开您想要索引的任何内容,例如直接来自数据库的数据。

关于php - 在一个后台为MYSQL的网站上集成搜索,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1197999/

相关文章:

java - 在 ArrayList 对象中搜索字符串

php - 流式传输 FTP 下载到输出

php - cron输出到日志,有没有办法让日志动态化?

javascript - 多个子字符串的 jquery/javascript 检查字符串

php - UPDATE 查询有问题

mysql - 连接而不是子查询

lucene - 如何让Lucene匹配查询中的所有单词?

javascript - 从 angularjs 中删除 # 并使 url 变得漂亮

php - 如何让 index.php 控制 PHP 中的任何内容

mysql - 列不存在,即使它存在于数据库中