我的 Rails 3 应用程序有一个站点范围的自定义编写的搜索控制器,并希望包含来自该站点的 WordPress 博客的结果。在我的 Rails 应用程序中对帖子执行关键字搜索的最佳方式是什么?
6 回答
如果您共享数据库,则只需对其使用 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 应用程序中解码)。
有趣的问题。我想我会这样处理它:
使用RSS作为从博客到您的 rails 应用程序的文本传输。这允许将来灵活地添加更多博客、更改您的博客引擎、数据库主机等。它还可以保护您免受 Wordpress 代码更新的影响。鉴于 Wordpress 的安全历史,无论如何我都喜欢将它们托管在受保护的沙箱中。RSS 是博客的母语,因此它似乎很适合这种内容集成。
使用feedzirra gem将RSS 条目导入到 rails 模型中。
使用Elasticsearch和轮胎在您的 rails 应用程序和博客条目中进行模糊文本搜索。有关详细信息,请参阅此 Railscast。
选项 1. 是对两个站点都使用搜索引擎,例如 elasticsearch、solr 等。因此,您可以从 rails 和 wordpress 填充索引。
选项 2。您编写脚本,定期读取您的 wordpress RSS 并将数据保存在您的 rails 应用程序中。
最后你应该避免从不同的来源搜索,你应该将数据收集到一个地方然后搜索。
您不必坚持使用 wordpress。您可以使用 Google 搜索 API。Web 搜索 api已被弃用但仍在工作。它的替代品是自定义搜索 API。如果您查询超过限额,您可能需要付费。
或者,您可以利用其他搜索引擎 API,例如Bing Search API。
我建议使用 Wordpress JSON API 并使用 solr 或类似的东西将其插入您的搜索中。您可以在创建帖子时建立索引,然后通过 sam JSON 接口调用文章。