【问题标题】:Which custom search engine?哪个自定义搜索引擎?
【发布时间】:2016-01-21 06:02:21
【问题描述】:

我有一个网站在 Apache 上运行,PHPMySQL

我希望对存储在MySQL 表以及.pdf.docx 文档中的文本实现自定义搜索引擎。

我不确定要使用哪个 API。

我查看了 Google 的 Custom Search Engine (CSE)Elastic Search。我了解到,Elastic 只能在基于 Java 的服务器上运行,因此我无法走这条路。

我知道 Elastic 可以通过其 REST api 处理我的要求。 Google CSE 是否能够做到这一点,即搜索存储在数据库表和 PDF 中的文本?还有其他可能的自定义搜索 API 吗?

【问题讨论】:

  • 请注意,Elasticsearch 也以a hosted service 的形式提供,您无需安装任何东西。
  • 感谢您指出这一点!太贵了!
  • 虽然有一些免费的托管计划。浏览我分享的链接,你应该会找到一些。
  • ElasticSearch 在 Java 上运行,但这并不意味着应用程序需要用 Java 编码。只需要安装 ElasticSearch(很快)和 Java 运行时(如果没有安装)。请求通过 HTTP 发生

标签: elasticsearch google-custom-search


【解决方案1】:

诸如 Google 自定义搜索引擎(在您的情况下为 Google Site Search)甚至任何其他网络机器人(例如 Nutch)之类的解决方案只会读取 Web 端的内容:浏览器可以访问的内容(不是登录)并通过显示网页的 URL(带有标题和文本内容的摘录)对其进行分类。

如果无需登录即可访问所有 PDF、docx 和网页,那么它的效果非常好。网络应用程序创建者应该启用它。这并不意味着普通用户可以访问所有内容,只有机器人可以访问(例如,Springer 发布者邀请 Google bot 访问几乎所有内容,但不能访问普通浏览器)。

如果您希望搜索服务器仅访问数据库的字段,它需要与您的数据库通信。谷歌站点搜索(谷歌自定义搜索的一种形式)不允许这样做。 ElasticSearch 和 Apache Solr 允许这样做。但是,出于安全原因,大多数 Web 托管服务不会从外部访问数据库端口。因此,您可能会看到另一个要求您在本地运行搜索服务器。

运行 java 或 Google CSE 的要求似乎是不可避免的。我知道在其他语言中没有相同质量的解决方案(例如 Drupal 可以提供基于 MySQL 的文本搜索,但它的容忍度要低得多)。现在很多云节点都可以运行java。

【讨论】:

  • 谢谢!只是好奇,Solr 需要什么类型的服务器?可以在 CentOS 上运行吗?
  • 它需要 OpenJDK。我相信当前版本需要 1.7。一些教程说明了如何在 CentOS 上安装 Solr,例如here.
  • Google 的可编程搜索引擎允许根据您可以指定的元标记查询(或赋予权重)特定字段
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多