Rails 3 アプリ用にサイト全体でカスタム作成された検索コントローラーがあり、サイトの WordPress ブログからの結果を含めたいと考えています。Rails アプリ内から投稿に対してキーワード検索を実行するにはどうすればよいですか?
6 に答える
データベースを共有する場合は、SQL クエリを使用してください。このソリューションは、直接の db クエリの速度を提供しますが、関連するすべてのデータを取得するには、そのクエリを適切に作成する必要があります。
Rails アプリから WP データベースにアクセスできない場合は、curl、httparty、RestClient、またはその他のファイル取得ライブラリを使用するのが最善の方法です。
これを行うには、Rails アプリで解析するのに最適な形式 (json、xml、csv、urlencoded など) で検索結果を出力するカスタム テンプレートを使用して Wordpress ページを作成します。
次に、curl/RestClient/httparty を使用して Ruby アプリからその WP ページをリクエストします…</p>
このソリューションは、結果を取得するための WP テンプレート タグと関数の機能を提供します。
また、カスタム テンプレートを最初から作成する代わりに、コア テンプレートから search.php をコピーして微調整するだけで、Rails アプリに必要な形式で結果を提供できます。
このソリューションでは、すべての検索結果を http パイプ経由で転送する必要があり、データを 2 回処理する必要があるため、db への直接アクセスの速度が不足しています (WP で適切な形式にエンコードし、Rails アプリでデコードします)。
興味深い問題です。私は次のようにアプローチすると思います:
RSSをブログから Rails アプリへのテキスト トランスポートとして使用します。これにより、将来さらにブログを追加したり、ブログ エンジンやデータベース ホストなどを変更したりできる柔軟性が得られます。また、Wordpress コードの更新からも保護されます。Wordpress のセキュリティの歴史を考えると、とにかく保護されたサンドボックスでそれらをホストするのが好きです。RSS はブログのネイティブ言語であるため、この種のコンテンツ統合には自然に適合するようです。
RSS エントリを Rails モデルにインポートするには、 feedzirra gemを使用します。
Rails アプリとブログ エントリの両方であいまいテキスト検索を行うには、 ElasticsearchとTireを使用します。詳細については、この Railscastを参照してください。
Wordpress JSON APIを使用し、solrなどを使用して検索にプラグインすることをお勧めします。投稿が作成されたときにインデックスを作成し、samJSONインターフェースを介して記事を呼び出すことができます。
ワードプレスにこだわる必要はありません。Google 検索 API を使用できます。Web 検索 APIは廃止されましたが、まだ機能しています。それに代わるものはCustom Search APIです。制限を超えてクエリを実行すると、料金が発生する場合があります。
または、 Bing Search APIなどの他の検索エンジン API を利用することもできます。
オプション1.elasticsearch、solrなどの両方のサイトで検索エンジンを使用することです。したがって、レールとワードプレスからインデックスを作成します。
オプション 2. wordpress RSS を定期的に読み取り、Rails アプリにデータを保存するスクリプトを作成します。
最後に、さまざまなソースから検索することは避け、データを 1 か所に集めてから検索する必要があります。