【问题标题】:Searching WordPress blog from Rails app从 Rails 应用程序搜索 WordPress 博客
【发布时间】:2012-10-18 07:43:41
【问题描述】:

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

【问题讨论】:

  • 不确定这是否可行,但它们是否共享同一个数据库?

标签: ruby-on-rails ruby-on-rails-3 wordpress


【解决方案1】:

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

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

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

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

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

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

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

【讨论】:

  • 关于以下内容——“使用自定义模板创建 Wordpress 页面,该模板将以某种格式输出搜索结果”——你能说得更具体些吗?最佳格式将是 json。如果你能指出一个教程或给我一个代码示例,那会很有帮助。
  • 他的意思是在你的 Wordpress 安装中,在你当前的模板目录下创建一个新的模板文件,比如 custom_search.php。然后你必须在 php 中构建一个搜索 api,并以你喜欢的 w/e 格式返回结果。 - domain.com/wordpress/custom_search.php?query=keyword ->(返回)匹配文章的 json 编码结果。
  • 没错。通过非常详细的分步教程执行此操作的一种方法是:codex.wordpress.org/Creating_a_Search_Page 您只需将输出更改为 json 格式而不是 html。
  • 如何将输出更改为 json 格式?教程中没有涉及到这一点。
  • 转换为 json 格式使用 PHP 函数 json_encode。 php.net/manual/en/function.json-encode.php 这里展示了将 wordpress 帖子格式化为 json 的示例:extremelysatisfactorytotalitarianism.com/blog/?p=464
【解决方案2】:

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

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

  • 使用 feedzirra gem 将 RSS 条目导入到 Rails 模型中。

  • 使用 Elasticsearchtire 在 Rails 应用和博客条目中进行模糊文本搜索。详情请见this Railscast

【讨论】:

    【解决方案3】:

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

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

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

    【讨论】:

      【解决方案4】:

      您不必拘泥于 wordpress。您可以使用 Google 搜索 API。 Web search api 已被弃用,但 still working。它的替换是Custom Search API。超限查询可能需要付费。

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

      【讨论】:

        【解决方案5】:

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

        【讨论】:

          【解决方案6】:

          在 ElasticSearch 中使用 Tirewp-elasticsearch

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 2018-10-14
            • 1970-01-01
            • 1970-01-01
            • 2015-01-22
            • 2011-11-20
            • 1970-01-01
            • 2013-08-03
            • 1970-01-01
            相关资源
            最近更新 更多