問題タブ [faceted-search]

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.

0 投票する
3 に答える
20283 参照

solr - Solr - 検索結果を返さずにファセット数を取得する

Solr からファセット カウントのみを返す必要があります。したがって、基本的にすべてのドキュメントを検索してファセット数を返したいのですが、検索結果を返したくありません。これは可能ですか?

ありがとう

0 投票する
1 に答える
3496 参照

solr - SOLR のファセット クエリ ブラウザ

SOLR インデックスを指定できるファセット クエリ ブラウザーをお勧めできますか? 理想的には、これは、インデックスからさまざまなファセットが抽出され、ユーザーが 1 つをクリックすると、残りの項目に適用可能なファセットが表示され、最終的に元のデータのサブセットに到達する、Endeca によって構築された GUI のようなものになります。 . インデックスに対して個々の Lucene クエリを作成するのは簡単ですが、デバッグの目的では、独自のブラウザーを作成するよりも、ビルド済みのブラウザーを使用したいと考えています。

0 投票する
1 に答える
3403 参照

solr - solr ファセット数のフィルタリング

次のシナリオを考えます。

結果セットを指定して、特定の product_type でフィルター処理されたファセット フィールド product_id のファセット カウントを取得したい (これを取得するには、フィルター クエリなどを使用します ...)

私が望むのは、ファセット数をフィルタリングすることであることに注意してください。

  • ファセット クエリは、特定のファセット クエリの結果を含むリストを導入するため、役に立ちません。(フィルタークエリもありません)

    2921

  • Facet.prefix は、必要な種類のフィルターを実行しますが、このシナリオでの使用方法がわかりません。

特定のカテゴリに一致するproductIDのカウントオフをフィルタリングしたいという発言

0 投票する
2 に答える
2387 参照

c# - この GetCardinality メソッドが何をしているのか、誰か説明してもらえますか?

私は Lucene.NET でファセット検索を調べてきました。ビット配列内のアイテムのカーディナリティをチェックする機能を完全に見落としているという事実を除けば、かなりの量を説明する素晴らしい例をここで見つけました。

誰かが私にそれが何をしているのかを教えてもらえますか? 私が理解していない主なことは、なぜ bitsSetArray がそのまま作成されるのか、何に使用されるのか、すべての if ステートメントが for ループでどのように機能するのかです。

これは大きな質問かもしれませんが、自分のコードで使用することを考える前に、これがどのように機能するかを理解する必要があります。

ありがとう

0 投票する
2 に答える
6308 参照

mysql - MySQL とファセット ナビゲーション (属性によるフィルター)

この質問はおそらくすでに何千回も聞かれているような気がするので、答えられていたら申し訳ありません。もしそうなら、誰かが私に正しい投稿/リンクを教えてもらえますか?

私がやろうとしているのは、サイトのファセット ナビゲーションを構築することです。これは MySQL を使用しており、私が使用しているテーブルの大まかなスケッチは次のとおりです。

私がやりたいことは、カテゴリにいるときに利用可能な属性のリストを表示し、それらの属性ごとに 1 つ以上の値を選択できるようにすることです。例として、Office Depot の次のページを見てください: http://www.officedepot.com/a/browse/binders/N=5+2177/

これまで、複数の属性をフィルタリングするために多くの結合を使用してきました。

基本的に、 と を使用しa_optionsて適用したフィルターのサブセットである製品のすべての属性を返します。したがって、Office Depot のバインダーの例を使用する場合、色に青または黒を選択し、サイズに「8.5 x 11」を選択した後、使用可能なすべての属性を表示したいと考えています。a_select1a_select2

次に、PHP コードを使用して重複を削除し、結果の属性を次のような配列に配置します。

クエリを高速化したり、より効率的に記述したりする方法はありますか? 属性テーブルの名前と値 (およびすべての ID 番号) にインデックスを設定しました。しかし、誰かがいくつかの属性を選択すると、クエリの実行が遅くなります。

事前にご協力いただきありがとうございます、
Sridhar

0 投票する
2 に答える
2410 参照

database-design - 動的分類法を処理するための専用のファセット検索エンジン - パフォーマンスや柔軟性だけに役立ちますか?

私はしばらくの間、eBay のような分類法と特定の製品カテゴリに依存する属性を使用して、典型的な e コマース サイトをモデル化することについて考えてきました。

最初の試みは、EAV と Table Per Class db 継承モデリングのどちらかを選択することでした。パフォーマンスのために後者を選択しましたが、それが意味することは、個別の列としてモデル化された特定のカテゴリ属性 (テレビの解像度など) を持つ特定の (カテゴリ ツリーの葉) 製品カテゴリごとに専用のテーブルを作成することでした。

既存のカテゴリに属性を追加したり、新しいカテゴリを追加したりする必要がある場合、この設定は効率的ですが、柔軟ではありません。このような変更ごとに、次のものが必要です。

  • テーブルの変更/作成
  • このようなカテゴリを特定の属性でフィルタリングするための新しいフォーム
  • 検索およびフィルタリング用のデータベース クエリを生成するための新しいコード
  • 新しいカテゴリの製品を表示するためのいくつかの新しいビューモデル/DTO およびビュー

その複雑さに対処するには、これらの属性のある種のメタ表現が (アプリケーションの外部であっても) xml または Excel ファイルで必要であると思います。これにより、変更のたびに、言及されたすべてのコードが自動生成されます (sql/orm クエリ、アプリケーションコード、テンプレート)。したがって、開発には役立ちますが、それでもテストと追加の展開が必要です。

その時点で、eBay は実際には検索にリレーショナル データベースを使用しておらず、分類法が非常に柔軟であるため、新しいリーフ カテゴリを非常に迅速に追加できることを知りました。また、それらのカテゴリは、おそらくリレーショナル データベースでモデル化された階層ツリーのカテゴリではなく、単に検索属性 (ファセット) です。

最も有望な専用のファセット検索セットアップ (個別の Solr インスタンス) を簡単に調べた後、分類法の変更に柔軟に対応できるかどうかはわかりません。通常、Solr は何らかの形でリレーショナル DB をミラーリングするだけなので、特定のカテゴリ属性は依然としてDBMS メタデータとして DB でモデル化されます。属性をフィルタリングするための UI フォームを動的に生成することは、次の場合を除いて困難です。

1) EAV ファシオンを使用してデータを RDBMS に保持し、SOLR 検索を使用してパフォーマンスの問題を克服します (ただし、EAV の乱雑さ、データ整合性の強制などの問題はまだあります)

2) RDBMS に属性ディクショナリ (名前と型のみ) だけを保持し、検索機能とは別に非リレーショナル データ ストアのようなものとして使用して、特定の属性値を SOLR に格納します。アプリケーションがsolrと緊密に結合されるため(つまり、製品版の管理者CRUDがSOLRと直接やり取りするため)、このソリューションにも(たとえそれが可能であったとしても)確信が持てません。

あなたの考えは何ですか?このような (パフォーマンスの高い) 分類法では、柔軟なコード生成は避けられないと思いますか? それをどのように処理しますか?コード生成のためだけに、DB で EAV 方式の別のデータ ディクショナリがあるのでしょうか。MongoDB のようなものも使用できると思いますが、UI コードの生成 (実行時かどうかに関係なく) には何らかのメタデータが必要です。

ここには多くの質問がありますが、より大きなクラスの問題を扱うときの一般的な設計アプローチに興味があるため、小さな質問に分割したくありませんでした。

0 投票する
3 に答える
5172 参照

solr - 複数の値を持つファセット フィールドで、同時に Solr で空白のファセットを検索するにはどうすればよいですか?

ユーザーが車の部品を選ぶことができるアプリケーションがあります。彼らは車両を選択し、次に車両属性をファセットとして選択します。車両を選択した後、エンジン サイズなどのファセットを選択して、結果のリストを絞り込むことができます。問題は、すべてのドキュメントにエンジン サイズがあるわけではないことです (Solr では空の値です)。たとえば、エンジンのサイズがエア フィルターにとって重要になることはめったにありません。そのため、ユーザーがエンジン サイズで 3.5L を選択したとしても、ユーザーが選択できる可能性のある部品としてエア フィルターを画面に表示したかったのです。いくつかの検索を行ったところ、次のファセット クエリは完全に機能します。

このクエリは、3.5 に一致するか、エンジン サイズ フィールドに値がないレコードに一致します (値がないということは、重要ではなく、車に適合することを意味します)。完全...

問題: 最近、車両属性フィールドを多値フィールドにしたので、各パーツの属性をリストとして保存できました。次に、ファセットを適用すると、うまくいきました。ただし、前述のクエリを適用すると問題が発生しました。enginesize ファセットを選択すると、表示されるドキュメントの数がそのエンジン サイズを持つドキュメントのみに絞り込まれますが、enginesize の値が空の (つまり "") を持つレコード (ドキュメントという意味でもレコードを使用します) は表示されませんでした。上記の同じクエリは、enginesize が単一値フィールドの場合と同じように、多値ファセットには機能しません。

例:

私が探しているのは、3.5 のエンジン サイズのファセット検索を行うときに、上記のドキュメント 1 と 3 を引き戻すクエリです。最初のドキュメント (エンジン マウント) は一致します。これは、探している多値フィールド「enginesize」の 1 つに値が含まれているためです (フィールドの 1 つに 3.5 が含まれています)。<str>ただし、エア フィルターの 3 番目のドキュメントは、空の値のため返されません。ファセット値と一致しないため、2 番目のドキュメントを返したくありません

基本的に、特定のファセットの空の文字列値に一致し、実際の値にも一致するクエリが必要なため、両方のドキュメントが返されます。

ドキュメント 1 とドキュメント 3 (エンジン ブラケットとエア フィルター) を返し、エンジン ボルト ドキュメントを返さないクエリを誰かが持っていますか?

私は成功せずに次のことを試しました(この質問の一番上にあるものを含む):

上記のデータを CSV ファイルを使用してインポートし、フィールドを設定しましたkeepEmpty=true。代わりに、CSV ファイルを生成するときに手動でフィールドにスペースを挿入しようとしました (これ<str> </str>により、以前の の代わりに , が得られ、クエリを再試行しました。それを行うと、次の結果が得られました。

空白の値としてスペースがある場合でも、単に値がまったくない場合でも、どちらの状況でも機能するクエリを誰かが持っていますか?

0 投票する
1 に答える
1727 参照

lucene - Solr/Lucene: ファセット値のインデックス作成

たとえば、次のファセットがあるとします。

  • 赤 (7825)
  • オレンジ (2343)
  • グリーン (843)
  • ブルー (5412)

私のデータベースでは、色はテーブルで、各色には主キーと名前/値があります。

Solr/Lucene を使用してインデックスを作成する場合、私が見たすべての例で、主キーではなく値にインデックスが作成されます。したがって、赤色でフィルタリングすると、次のような結果が得られます。

http://www.example.com/search?color=赤

代わりに主キーにインデックスを付けて、ファセット値を表示するときにデータベースから値を取得するのが賢明でしょうか? したがって、代わりに次のようなものを取得します。

http://www.example.com/search?color=1

赤の主キーを表す「1」。多くのファセットの値が頻繁に変更されるため、このアプローチを採用する必要があるかどうか疑問に思っていますが、主キーは同じままです。また、インデックスはデータベースと同期している必要があります。

これについての経験はもうありますか?これはパフォーマンスにどのように影響すると思いますか?

前もって感謝します!

0 投票する
1 に答える
5349 参照

ruby-on-rails - Sunspot を使用して多対多のリレーションシップでファセット検索を設定するにはどうすればよいですか?

以前に検索機能を実装したことがなく、少し行き詰まりを感じています。キーワードに基づいて結果を検索する Sunspot 検索機能があります。これはうまく機能しますが、複数選択ファセット機能を実装したいと考えていますが、基本的なファセット検索の設定方法がわかりません。

私は多対多の関係を持っています(実際にはレールではありません):

クラス People has_many :skills, :through => experience (およびその逆など)

コントローラーで

これは、私がうまくいかない基本的な例です。次のエラーが生成されます。

:skill_ids へのリンクを作成する方法

モデル内の参照が欠落しているに違いないと思いますが、関係の Id を参照する例は見つかりません。私が見つけたほとんどの例では、ファセット機能を使用するときに、そのモデルに既に存在する列を使用しています。

  • 基本的な実装を機能させるにはどうすればよいですか?
  • ビューでこれをどのように使用しますか? hits.facet を呼び出して、スキルを反復処理する必要がありますか? これを表示するコードはどのようになりますか?
  • 複数のファセットを選択して検索するにはどうすればよいですか?
  • これをコミュニティ wiki に入れる必要がありますか?

お時間をいただきありがとうございます!