4

我的 Rails 3 应用程序有一个站点范围的自定义编写的搜索控制器,并希望包含来自该站点的 WordPress 博客的结果。在我的 Rails 应用程序中对帖子执行关键字搜索的最佳方式是什么?

4

6 回答 6

5

如果您共享数据库,则只需对其使用 SQL 查询。此解决方案为您提供直接数据库查询的速度,但您需要正确构建该查询才能获取所有相关数据。

如果您无法从 Rails 应用程序访问 WP 数据库,那么最好的方法是使用 curl、httparty、RestClient 或任何其他文件检索库。

为此,请使用自定义模板创建 Wordpress 页面,该页面将以最适合您在 Rails 应用程序中解析的格式输出搜索结果(json、xml、csv、urlencoded 等)。

然后使用 curl/RestClient/httparty 从您的 Ruby 应用程序请求该 WP 页面...</p>

该解决方案为您提供了 WP 模板标签和功能的强大功能来获得结果。

此外,无需从头开始创建自定义模板,您只需从核心模板复制和调整 search.php 即可以 Rails 应用程序所需的格式提供结果。

使用此解决方案,您缺乏直接访问 db 的速度,因为所有搜索结果都必须通过 http 管道传输,并且您必须两次处理数据(在 WP 中编码为正确格式并在 Rails 应用程序中解码)。

于 2012-11-05T03:31:39.320 回答
1

有趣的问题。我想我会这样处理它:

  • 使用RSS作为从博客到您的 rails 应用程序的文本传输。这允许将来灵活地添加更多博客、更改您的博客引擎、数据库主机等。它还可以保护您免受 Wordpress 代码更新的影响。鉴于 Wordpress 的安全历史,无论如何我都喜欢将它们托管在受保护的沙箱中。RSS 是博客的母语,因此它似乎很适合这种内容集成。

  • 使用feedzirra gemRSS 条目导入到 rails 模型中。

  • 使用Elasticsearch轮胎在您的 rails 应用程序和博客条目中进行模糊文本搜索。有关详细信息,请参阅此 Railscast

于 2012-11-06T21:11:55.753 回答
0

选项 1. 是对两个站点都使用搜索引擎,例如 elasticsearch、solr 等。因此,您可以从 rails 和 wordpress 填充索引。

选项 2。您编写脚本,定期读取您的 wordpress RSS 并将数据保存在您的 rails 应用程序中。

最后你应该避免从不同的来源搜索,你应该将数据收集到一个地方然后搜索。

于 2012-11-09T13:28:16.120 回答
0

您不必坚持使用 wordpress。您可以使用 Google 搜索 API。Web 搜索 api已被弃用但仍在工作。它的替代品是自定义搜索 API。如果您查询超过限额,您可能需要付费。

或者,您可以利用其他搜索引擎 API,例如Bing Search API

于 2012-11-10T09:16:35.290 回答
0

我建议使用 Wordpress JSON API 并使用 solr 或类似的东西将其插入您的搜索中。您可以在创建帖子时建立索引,然后通过 sam JSON 接口调用文章。

于 2012-11-11T21:52:51.613 回答
0

Tirewp- elasticsearch 与 ElasticSearch 一起使用。

于 2012-12-11T11:55:47.847 回答