問題タブ [sunspot]
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 - Solr検索を使用した関連性による結果の順序付け
私はSolr検索に不慣れで、結果の順序を処理する方法を把握しようとしています。私はRubyonRailsをSunspotgemと一緒に使用して、Solrとのインターフェースを取っています。
インデックスが付けられた次のフィールドを持つArticleモデルがあります。
Solrで検索を実行できるようにしたいと思います。
- 完全に一致するタイトルが何よりも先に返されます
- 正の重み付けは、NumberOfReviewsが大きい記事に比例して与えられます
理想的には、ヒヤリハットやタイプミスもある程度見られるグーグルのようなこともしたいのですが、私はそうではありませんが、ユーザーが間違いを犯したと思われる場合は、別の検索を提案しますこれが可能であることを確認してください。
誰かが私を助けたり、正しい方向に向けたりできますか?前もって感謝します!
ruby-on-rails - Ruby on Rails:引用符を削除する壊れたテキストフィールド解析を使用して、サイトで検索フォームを作成する方法を教えてください。
私はSunspotSolr検索を使用しています。これは、基本的な検索の大部分で正常に機能します。フレーズの前後の引用符を処理できるはずなので、を検索するtest case
とテストとケースの両方のドキュメントが返されますが、を検索すると"test case"
フレーズテストケースのドキュメントが返されます。
ただし、Railsが検索エンジンに到達する前に、ユーザー入力から外側の引用符を削除しているように見えるため、私はこれに頭を悩ませてきました。したがって、 or (先頭と末尾のスペースを含む)と"test case"
まったく同じ結果が返されますtest case
。最初のケースでは、外側の引用符が内側の引用符を残して削除され、2番目のケースでは、この問題は先頭と末尾の引用符にのみ影響するためです。マーク。""test case""
"test case"
どうやら、これは既知のバグであり、Railsチームによって修正されないとマークされています。非常に一般的な機能のように見えるので、このオンラインで見つけることができることがどれほど少ないかに本当に驚いています。
人々はこれをどのように回避していますか?このため、ユーザーに二重引用符を付けるように依頼することは、私には合理的な解決策のようには思えません。特に、Rackに独自のカスタム変更を加えたくありません。
ruby-on-rails - Solr / Luceneは、最初に関連性で注文し、次に2番目の属性で注文することができますか?
Solr / Luceneでは、最初に関連性で注文し、次に2番目の属性で注文することは可能ですか?
順序付けパラメーターを設定したかどうかがわかる限り、関連性を完全にオーバーライドし、順序付けパラメーターで並べ替えます。
結果を最初に関連性でソートし、次にまったく同じ関連性を持つ2つのエントリの場合、たとえばアルファベット順で最初に来るアイテムにうなずくにはどうすればよいですか。
違いがあれば、RubyonRailsのSunspotからSolrを使用しています。
ruby-on-rails - Sunspot での Solr 検索クエリのデバッグ
Rails で Sunspot gem を使用しているときに Solr 検索クエリをデバッグするにはどうすればよいですか? 奇妙に高いスコアを返すクエリがいくつかあり、なぜこれが起こっているのかを突き止めようとしています。
Sunspot にはデバッグ情報が公開されていないようなので、Solr から直接デバッグする必要があると思います。幸いなことに、Solr には検索用の便利な Web インターフェイスがありますが、何らかの理由で、そこに入力したクエリはすべて 0 件の結果を返します。
たとえば、Web アプリで「テスト」という単語を検索すると、多数のヒットが返されます。Solr管理インターフェースで同じものを検索すると、次のようになります。
javascript - しないように指示しているときに、入力フィールドのテキストがクリアされる
で書かれた入力フィールドがありますonfocus="this.value=''
が、最近変更することにしましたonfocus="this.select()
。問題は、私が変更に行ったとき、まだクリアされていることです!javascript ライブラリ全体、html、すべてを検索して、それを引き起こしている可能性のあるものを探しました。同類のものは何も呼び出されていません。
キャッシュをクリアしてみました。そして、検索してみましvalue=''
たcl(
これをデバッグする方法を知っている人はいますか? またはさらに悪いことに、それが何をしているかをオーバーライドして、私がやりたいことをさせますか?
私のコード:
私も試しました:
ありがとう!
ruby-on-rails - Sunspotが検索DSLブロックの「自己」を変更するのはなぜですか?
私は次の動作に気づきました(そして黒点コードで確認しました)
上記のコードでは、DSLブロックはコンテキストで定義された変数にアクセスできます。ただし、内部ブロックは、 (クラスのインスタンスではなく )クラスself
のインスタンスを指し
ます。オブジェクトのを取得する代わりに、にアクセスしようとすると、オブジェクトのを取得します。Sunspot::DSL::Search
Foo
self.id
id
Foo
id
Sunspot::DSL::Search
サンポットはメソッドでバインディングスワッピング/委任の魔法を使っていると思います Util.instance_eval_or_call
。
Sunspotがこれを行う理由と、ドキュメントにこの動作に関する警告がない理由に興味があります。
編集:
黒点の検索方法は、このリンクにあります
以下のコードは私のポイントを示しています。このメソッドfoo
には、期待どおりに動作するブロックがあります。メソッドbar
では、ブロックは動作しません。
注2
通常のブロック動作を変更するコードをSunspotソースツリーに配置しました。私の質問は、このようにバインディングをリギングする理由についてです。
注3
具体的にはid
、ブロック側でメソッドを呼び出しているときに問題が見つかりました。メソッドは、ブロック内のsearch
メソッド呼び出しをDSLオブジェクトに委任し、メソッドが見つからない場合、呼び出しは呼び出し元のコンテキストに再委任されます。Searchメソッドは、委任コードを登録する前に、DSLオブジェクトから必須メソッドを除くすべてを取り除きます。id
メソッドは削除されません。これが問題の原因です。他のすべての方法では、委任は正常に機能します。
この動作は、Sunspotメソッドのドキュメントには記載されていません。
ruby-on-rails - 単一のオブジェクトに一致するSunspotSolr
RoRアプリでSunspotgemを使用してPost
モデルを検索しますが、これは非常に効果的です。ただし、単一の投稿オブジェクトに対してマッチングアルゴリズムを使用する必要があります。
たとえば、次のようにすべての投稿を検索できます。
ただし、次のように、単一の投稿オブジェクトに対して検索を行う必要があります。
これは可能ですか?
単一の投稿オブジェクトで同じ一致アルゴリズムを使用して、一致するかどうかを確認したいと思います。
ruby-on-rails - nil:NilClass の未定義メソッド「all_text_fields」
Rails 2.1 を使用し、Sunspot 検索を実装しています。サーバーは正常に動作していますが、問題はテキストを検索しているときに次のようなエラーが表示されることです。
この問題の解決策について詳しい人が助けてくれませんか?
ありがとうございました。
ruby-on-rails - SunSpotSolrでのネストされた検索
メッセージスレッドのSolrベースの検索を実装しようとしています。各メッセージには多くの返信を含めることができます(返信の深さは1レベルのみです)。検索キーに一致するコンテンツを含む親メッセージを取得するか、検索キーに一致する返信を取得したい。
例えば:
検索するJanice
と、次の結果セットが返されます。
私のモデルは次のとおりです。
ネストされたサブクエリのような条件を指定するためのDSL構文は何ですか?
編集1
すべてのインデックスを保持するための複合テキストインデックスフィールドを作成することを検討しました。しかし、返信が特定の追加基準に一致することを確認する必要があるため、このアプローチは私のシナリオでは実行可能ではありません。
上記のモデルでは、テキスト検索を特定のカテゴリに制限したいと思います。
ruby-on-rails - sunspot-rails を使用した Lucene 項ブースティング
Lucene の Term [Boosting][1] クエリ構文、特に Ruby on Rails で sunspot_rails gem に問題があります。これにより、クエリ中に特定の用語の重みを指定でき、特定のフィールドの重み付けとは関係ありません。
sunspot によって生成された HTML クエリは、qf パラメータを使用して、検索するフィールドを設定どおりに指定し、q パラメータをクエリ自体に使用します。キャレットを検索用語に追加してブーストを指定すると (つまり、q=searchterm^5)、ブースト用語なしで結果が返される場合でも、結果は返されません。
一方、HTTP クエリを手動で作成し、検索するフィールド (q=title_texts:searchterm^5) を手動で指定すると、結果が返され、スコアがブーストの影響を受けているように見えます。
つまり、クエリ ターム ブースティングは、qf で指定されたフィールドと組み合わせて機能しないように見えます。
私のアプリケーションは、複数のフィールドにまたがる検索を呼び出し、それらのフィールドに関連付けられたそれぞれのブーストを使用して、条件付きでクエリの個々の用語をブーストします。
洞察はありますか?
[1]: http://lucene.apache.org/java/2_9_1/queryparsersyntax.html#Boosting a Term