我有一个在 Apache
上运行的网站,其中包含 PHP
和 MySQL
。
我希望对存储在 MySQL
表以及 .pdf
和 .docx
文档中的文本实现自定义搜索引擎。
我不确定该使用哪个 API。
我查看了 Google 的 Custom Search Engine (CSE)和 Elastic Search 。据我所知,Elastic 只能在基于 Java 的服务器上运行,因此我无法走这条路。
我知道 Elastic 可以通过其 REST API 满足我的要求。 Google CSE 是否能够执行相同的操作,即搜索数据库表和 PDF 中存储的文本?还有其他可能的自定义搜索 API 吗?
最佳答案
Google 自定义搜索引擎(在您的情况下为 Google Site Search)或什至任何其他网络机器人(例如 Nutch )等解决方案只会读取网络端的内容:浏览器可以访问的内容(不是登录)并按显示网页的 URL(带有标题和文本内容摘录)对其进行分类。
如果无需登录即可访问所有 PDF、docx 和网页,则效果非常好。网络应用程序创建者应该启用它。这并不意味着普通用户可以访问所有内容,而只能访问机器人(例如 Springer 发布商邀请 Google 机器人访问几乎所有内容,但不能访问普通浏览器)。
如果您希望搜索服务器仅访问数据库的字段,则它需要与您的数据库通信。 Google Site Search(Google 自定义搜索的一种形式)不允许这样做。 ElasticSearch 和 Apache Solr 允许这样做。然而,出于安全原因,大多数网络托管服务不允许从外部访问数据库端口。因此,您可能会看到在本地运行搜索服务器的另一个要求。
运行 java 或 Google CSE 的要求似乎是不可避免的。据我所知,其他语言中没有具有相同质量的解决方案(例如,Drupal 可以提供基于 MySQL 的文本搜索,但它的容错性要低得多)。现在很多云节点都可以运行java。
关于elasticsearch - 哪个自定义搜索引擎?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34916428/