問題タブ [sunspot-rails]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
ruby-on-rails - 黒点:子モデルを更新するときに親モデルのインデックスを強制する
私はSunspotを使用して、アプリのインデックスと概要を多数生成しています。
このアプリでは、親子の1対多の関係を持つ2つのモデルがあります。Sunspotを使用すると、親が持つ子の数にインデックスを付けることができるため、これは並べ替え、スコーピングなどに使用できます。
ただし、子モデルを変更しても、親モデルは自動的にインデックスが再作成されません(変更されていないため)。子のcall_backを介してparent.saveを強制しても、インデックスは強制されません。
だから私がハッキングを始める前に:
子モデルが変更/追加されたときにSunspotの親クラスにインデックスアクションを強制するための最良の方法は何でしょうか?
ruby-on-rails - Sunspot を使用してインデックス ビューを生成する - それは賢明ですか?
現在、多くの「インデックス」ビューが多くの仮想属性を利用するアプリで開発中です。同時に全文検索機能も必要です。
私たちが選択した解決策は、Sunspot/Solr を使用して、仮想属性を含むモデルのインデックスを作成することです。次に、Sunspot を使用して正しいレコードを取得し、並べ替え、検索などを行います。これはすべて、開発セットアップで非常にうまく機能します。
明らかに、このアプローチでは、Solr インデックスをデータベースと同期させておく必要があります。そうしないと、ユーザーが新しく作成したレコードがインデックス ページに一覧表示されません。これを実現するために、アプリのさまざまなポイントでインデックス アクションを強制します。
このソリューションを構築する前に、Sunspot をこのように使用することに懸念があるかどうかを確認したかっただけです。特に、アプリが大きくなった場合、インデックスを完全に同期させなければならないので、その負担が大きくなりますか?
インデックス ページで仮想属性を処理するのは非常に優れた方法のように思えますが、実際にはあまり良くないことを確認したいと思います...
助けてくれてありがとう
アーウィン
ruby-on-rails - Rails Sunspot - 値でファセット行を取得することは可能ですか?
クエリ ファセットがある場合 (したがって行の がわかっている場合value
)、既知の に基づいてファセットから特定の行を取得することは可能value
ですか?
そして、ビューで私は次のようなことをします:
ビュー出力の書式設定/整形に役立ちます。
このようなことは可能ですか?
ruby-on-rails - UbuntuサーバーのSunspotサーバーに接続できません
https://github.com/outoftime/sunspot/wiki/Adding-Sunspot-search-to-Rails-in-5-minutes-or-lessの手順に従って、MacのRailsにSunspot検索をインストールして設定しましたOSとそれは大丈夫です。
Ubuntuサーバーでは、接続拒否エラーが発生します。
私が走るとき
プロセスが開始されます。ファイルsunspot-solr-development.pid
はで作成され/tmp/pids
ます。しかし、インデックスを再作成しようとすると
でコマンドを実行してプロジェクトファイルにsudo
アクセス許可777
を与えようとしましたが、それでもエラーが発生します。Rails3.0.8。
何か案は?
solr - facet.date.start をランダムな過去の日付に設定しないすべての時間データ
Posts の時系列データを取得するには、次のクエリを使用します。
facet.date.start をランダムな過去の日付 (たとえば 100 年) に設定せずにすべての時間データを取得する方法はありますか?
ruby-on-rails - sunspot_rails レーベンシュタイン距離演算子
私はsunspot_rails(rails3上)を使用して、レールアプリをsolrサーバーに接続しています。~ 演算子を使用してあいまい検索を実行したいと思います。とにかく、これはサポートされていないようです。現在、EdgeNGrams を使用するようにフォールバックしていますが、結果に完全に満足しているわけではありません。
なにか提案を?sunspot_rails を介してレーベンシュタイン距離検索を行うことができた人はいますか?
解決した
Sunspot が提供するadjust_solr_paramsメソッドを使用すると、デフォルトのクエリ パーサーをオーバーライドできるため、~. 基本的に、defType パラメータを設定する lucene クエリ パーサーを Sunspot で使用するようにしました。
sunspot - モデルIDで検索結果を並べ替えるSunspot Rails?
次のモデルがあり、 で検索可能にしたとしsunspot_rails
ます。
schema.xml
Rails の Sunspot の標準はid
、インデックス付きフィールドとして宣言します。Web インターフェイスを使用して solr にアクセスし、次のようなクエリをテストすると、次のようになります。
equal toを検索しCases
て正常に動作し、結果を返します。id
Case 15
問題は、Rails コンソールで Sunspot Rails を使用して検索を実行したときです。
私は得る:
これは、正しいクエリ値が正しく入力されていることを示してい:q
ますが、ヒット数は 0 です。
戻り値
keywords
それが同等ではなくtext
、コロンの前に定義されたフィールドではなく、フィールド (全文検索)のみを検索すると仮定する:
と、次のことを試すことができます。
しかし、これは Sunspot 例外で失敗します:
id
モデルのインデックス付き標準 solr/sunspot フィールドを使用して検索するにはどうすればよいですか?
質問をより便利にするために、IDで注文するにはどうすればよいですか。以下は機能しません。
動作しません。Sunspot::UnrecognizedFieldError: No field configured for Case with name 'id'
ruby-on-rails - sunspot_railsを使用してアプリをテストするためのRSpec仕様の記述
sunspot_matchers gem(または単なるRSpec)でRSpecを使用して、sunspot gemを使用してコードをテストする良い例はありますか?
このエラーで何が起こっているのかを理解しようとしていますが、確かな例は見つかりません。
これが私が現在取り組んでいるモデル、スペック、スペック出力からのスニペットです:
/models/channel.rb
/spec/models/channel_spec.rb
RSpec出力、(r)、(y)、(g)は、失敗、保留、および合格の仕様を示します
上記のモデルでif/else条件をテストしようとしています。
何か案は?または、全体的なアプローチに関するアドバイスはありますか?
いくつかの良い例/ドキュメントは素晴らしいでしょう...または多分私はどこかで何かを逃しただけです。
ありがとう、
ケントン
ruby-on-rails - Sunspot-solr が大量のメモリを消費していますか? メモリ使用量を減らす便利な方法は何ですか?
そのため、Sunspot-Solr が大量のメモリを消費しているようです。そして、それはおそらく、プログラマーとしての適切な使用法を割り当てた私の過ちによるものです。
まず第一に、私は太陽黒点がそれ自体でインデックスを再構築することを許可しません。
これだけでも、インデックスの再作成を妨げていると思います。代わりに、早朝に 1 日 1 回実行される cron タブで再インデックス プロセスを実行します。
私がこれを始めた理由は、アプリケーションがスケーリングされるにつれて、データがマシン上に非常に重く置かれているように見えたため、単にホームページをロードするだけでかなりの時間がかかるようになったからです。
以下のエラーを引き起こすために何が間違っていますか? そして、私は何をより良くすることができますか?
問題のエラー:
ruby-on-rails-3 - Sunspot_Rails - ページ上で未定義のメソッド「検索可能」
searchable
次のようなブロックを持つモデルがあります。
コントローラーのindex
アクションで、 を呼び出しContact.new
ています。これにより、現在ステージング サーバーで実行されているページにエラー メッセージが表示されます。
#<Class:0xce0bf80> の未定義メソッド「検索可能」
スタック トレースは、コントローラー内searchable
の行を介してモデル内のブロックを指しています。Contact.new
Web ページまたはコンソール、またはステージング サーバーのコンソールを介してコードをローカルで実行すると、このエラーは表示されず、ステージング Web ページでのみ表示されます。
Solr サービスはステージング サーバーで正常に実行されており、データは正常にインデックス化されています。ステージングでボールをプレーしていない理由についての理論は受け入れられます。
編集
以下の Nick の質問への回答として、Gemfile には Sunspot の次の行が含まれています。gem 'sunspot_rails'
Gemfile.lock については、Sunspot または Solr の参照を含むすべての行を確認できます。