問題タブ [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.
php - ファセット検索(solr)とPHPを介した古き良きフィルタリング?
私のeコマースストアにフィルターシステムを設定する(検索を絞り込む)ことを計画しています。ここで例を見ることができます:http://www.bettymills.com/shop/product/find/Air+and+HVAC+Filters
PrestaShop、OpenCart、Magentoなどのプラットフォームには、いわゆるレイヤードナビゲーションがあります。
私の質問は、ファセットナビゲーションにSolrやLuceneなどを使用する場合と比較して、MagentoやPrestaShopなどのプラットフォームのレイヤードナビゲーションの違いは何ですか。
phpとmysqlだけで同様の結果を達成できますか?
詳細な説明をいただければ幸いです。
java - Solrファセットカウントがゼロに低下
私が取り組んでいるアプリケーションは、Solrを使用してさまざまなストアのページや製品にインデックスを付けています。「異なる店舗の商品」とは、店舗Aまたは店舗Bで商品を購入できるが、店舗Cでは購入できないことを意味します。顧客が店舗Cのウェブサイトに接続して、利用できない商品を検索した場合このストアでは、検索結果に表示されないはずです。
スキーマに「タイプ」フィールドがあり、ドキュメントが「ページ」か「製品」かを判断できます。この検索制約があるので、このフィールドには「ページ」または「productB」のこの「productA」のような複合キーが含まれます。ご想像のとおり、AまたはBはストアのIDです。
DB内の各商品について、n回インデックスを作成します。ここで、nはこの商品を販売している利用可能な店舗の数です。
検索したいストアをフィルタリングするためにファセット検索を使用したかったのですが、問題が発生しています。
インデックス作成を開始し、検索に直面せずに「foobar」を検索しています。私はこのようなファセットのリストを取得します:
この数は、ストアAのインデックス作成が終了するまで、増え続けています(これは正常です)。次に、ストアBのインデックス作成を開始し、solrにクエリを実行するとこのような結果が得られます。
しかし、しばらくすると、solrは怒って、この結果を送ってくれます。
はい。ファセットカウントすら取得productA
できず、検索することもできません。結果は0になります。
何が起こっているのか分かりますか?この種の問題にファセットを使用するのは間違っていますか?
solr - 特定の単語のSolrファセットカウント
Solr実装で特定のフィールドのファセット数を見つけようとしています。
そのフィールドのいくつかの特定の単語のファセットカウントを取得する方法があるかどうか疑問に思いましたか?
例えば、
フィールド名=製品
値には、カメラ<10>、テレビ<20>、DVD <20>、CD<30>を指定できます。
今、テレビとDVDだけのファセットカウントを取得することは可能ですか?
facet.prefixを使用してみましたが、複数の値に対して機能しません。
-ジェイ
php - PHP Solr クライアントでフィルターを指定するには?
私は PHP Solr クライアントを使用しておりfq
、この色の値に (Solr フィルター クエリ)を追加したいと考えています。149,163,166
私は何かを忘れましたか?PHPクライアントでは結果が得られないためです。
このURLを呼び出すことで
結果があります。
lucene - ファセットの保護された単語-結果?
いくつかのドキュメント(ニュース)のインデックスを作成するために、solrでluceneを使用しています。これらのドキュメントにも見出しがあります。次に、HEADLINEフィールドをファセット検索して、カウントが最も高い用語を見つけようとします。これはすべて、ストップワードリストを含めて問題なく機能します。HEADLINEフィールドは複数の値のフィールドです。私はsolr.StandardTokenizerFactory
これらのフィールドを単一の用語に分割するためにを使用します(これはベストプラクティスではありませんが、それが唯一の方法であり、機能します)。
9/11
時々、トークナイザーは、 (9と11に分割される)のように分割されるべきではない用語を分割します。そこで、「protword」リストを使用することにしました。「9/11」はこのプロトワードリストの一部です。しかし、変化はありません。
これが私のschema.xmlの一部です
ファセットの結果を見ると、「9/11」を「9」または「11」にグループ化(ファセット)したものの、「9/11」を扱っていないドキュメントがたくさんあります。
なぜこれが機能しないのですか?
ありがとうございました。
google-analytics - 日時ファセット検索ウィジェットおよび/またはデザインパターンを探しています
ファセット検索は、Amazon検索の本のカテゴリ(フィクション(500)、歴史(320)、伝記(212)など)などに適用するとユーザーフレンドリーです。しかし、ユーザーを許可するファセット検索のデザイン(またはウィジェット)はありますか?日時の範囲を絞り込み、同時に検索数がカレンダー全体に分散している場所をユーザーに表示します。
分析アプリケーションの簡単な例:管理者ユーザーがサイトユーザーを検索していて、登録日フィールドで検索を制限したいと考えています。タイムラインウィジェット(つまり、私が探しているもの)は、3年間の1日あたりの発生数を表示します。その視覚的なフィードバックは、登録の増加が木曜日に登録した新しいユーザーと相関していることを管理者に示しています。ウィジェットを使用すると、16か月間、すべての木曜日に結果を制約できます。その検索は、人々が木曜日に登録している理由を彼が理解するのに役立ちます。
それをすべて実行できるウィジェットを知っている人はいますか?(できれば軽量のJavaScript)またはこのシナリオに関連する設計資料。
私はこれまでに数時間検索しましたが、私が見つけた最高のものは、Google Analyticsに組み込まれているタイムラインビュー(写真)です。これはすばらしいことです。しかし、オープンソースバージョンが利用可能かどうかはわかりません。
java - Solrj を介した Solr facet_ranges へのアクセス
もう遅いかもしれませんが、 Solr の Facet Rangesに苦労しています。Solrj 経由でクエリを実行できますが、Solrj 経由で結果を取得する方法がわかりません。QueryResponseオブジェクトは範囲の getter メソッドを提供しませんよね?
たとえば、結果の XML は次のようになります。
データをカウントで取得したい。
ruby-on-rails - Rails Sunspot gem:複数のモデルのサイト全体の検索でファセットを使用する
Rails用の強力なSunspotgemを介してサイト全体の検索を実装しようとしています。これには、複数の非常に異なるモデルを一度に検索することが含まれます。私がやりたいのは、ファセット機能を使用して、ユーザーが各モデルで検索結果をフィルタリングできるようにすることです。デフォルトでは、:boost修飾子で並べ替えて、すべて同じページに表示します。Sunspot Railscastのファセットコードを別のStackoverflow質問の複数モデル検索コード( Sunspotドキュメントの「MultipleType」コードのバリエーション)と組み合わせると、うまくいくと思うがうまくいかない解決策が得られました。
複数メソッドの検索は成功しますが、ファセットは常にnullになります。私の基本的なアプローチは、同じ名前:search_classで各モデルに仮想属性を提供することです。これは、文字列にレンダリングされたモデルのクラス名です。次に、それをファセットとして使用してみます。ただし、ビューロジックでは、ファセット(@ search.facet(:search_class).rows)の結果は常に空の配列です。これには、@ search.resultsが同じクエリで多くの異なるモデルを返す場合も含まれますが、返された各インスタンスには完全にアクセス可能なInstance.search_class属性。
Rails3.1.0とsunspot-rails1.2.1を使用しています。
このファセットコードを機能させるにはどうすればよいですか?
コントローラ:
モデル:
意見:
solr - Solr検索に適用可能なすべてのファセットフィールドを取得するにはどうすればよいですか
WebサイトのファセットシーアーチにSolrを使用しようとしています。
ユーザーが検索クエリを起動すると、Solrにクエリを実行し、検索結果を取得して表示できるようにします。
私の質問は、検索結果に適用できるファセットフィールドと用語を見つけるにはどうすればよいですか?
明確にするために、製品のカテゴリごとにファセットフィールドが異なるため、返された検索結果に最も関連性の高いファセットフィールドを戻す方法を見つけたいと思います。フィールドを指定する必要はありません。Solrに関連するフィールドを特定してもらいたいのですが。
前もって感謝します!
nosql - 製品カタログRavenDBストアにクエリを実行して、製品の任意のコレクションに対する仕様の集計を確認します
これは、この質問で概説したプロジェクトの続きです。
私は次のモデルを持っています:
「Specs」配列は、特殊文字で結合された製品仕様名と値のペアを格納します。たとえば、商品が青色の場合、スペック文字列は「Color〜Blue」になります。このように仕様を表すと、クエリで指定された複数の仕様値を持つ製品をクエリできます。私がサポートしたい2つの主要なクエリがあります:
- 特定のカテゴリのすべての製品を取得します。
- 指定された仕様のセットを持つ特定のカテゴリのすべての製品を取得します。
これはRavenDBでうまく機能します。ただし、特定のクエリを満たす製品に加えて、クエリで指定された製品のセットのすべての仕様の名前と値のペアを含む結果セットを返したいと思います。仕様の名前と値のペアは、仕様の名前と値でグループ化する必要があり、特定の仕様の名前と値のペアを持つ製品の数を含める必要があります。クエリ#1では、次のマップリデュースインデックスを作成しました。
次に、このインデックスをクエリして、特定のカテゴリのすべての仕様名と値のペアを取得できます。私が遭遇している問題は、同じ結果セットを取得することですが、カテゴリと仕様の名前と値のペアのセットの両方でフィルタリングするクエリの場合です。SQLを使用する場合、この結果セットは、カテゴリと仕様でフィルタリングされた製品のセットに対してgroupbyを実行することによって取得されます。一般に、このタイプのクエリはコストがかかりますが、カテゴリと仕様の両方でフィルタリングする場合、製品セットは通常は小さくなりますが、1つのページに収まるほど小さくはありません。最大1000個の製品が含まれる場合があります。参考までに、MongoDBは、同じ結果セットを実現するために使用できるグループメソッドをサポートしています。これにより、アドホックグループ化サーバー側が実行され、パフォーマンスは許容範囲内です。
RavenDBを使用してこのタイプの結果セットを取得するにはどうすればよいですか?
考えられる解決策の1つは、クエリのすべての製品を取得してメモリ内でグループ化を実行することです。別のオプションは、上記のようにmapreduceインデックスを作成することですが、これに伴う課題は、特定のカテゴリに対して実行できるすべての可能な仕様の選択を推測することです。さらに、このタイプのインデックスはサイズが爆発する可能性があります。
例として、このファスナーカテゴリページを見てください。ユーザーは、属性を選択することで選択をフィルタリングできます。属性を選択すると、製品の選択が絞り込まれ、新しい製品セット内の属性が表示されます。このタイプのインタラクションは通常、ファセット検索と呼ばれます。
編集
それまでの間、 Solrを使用して解決策を試みます。これは、ファセット検索をすぐにサポートするためです。
編集2
RavenDBはファセット検索もサポートしているようです(もちろん、これは理にかなっています。インデックスはSolrと同じようにLuceneによって保存されます)。私はこれを調査し、更新を投稿します。
編集3
RavenDBファセット検索機能は期待どおりに機能します。特定のカテゴリ内のクエリのファセットを計算するために使用される各カテゴリIDのファセット設定ドキュメントを保存します。私が今抱えている問題はパフォーマンスです。4500の異なるカテゴリを持つ500kの製品のコレクションの場合、4500のファセット設定ドキュメントが生成されます。カテゴリIDによるクエリは、ファセットをクエリする場合は約16秒、ファセットをクエリしない場合は約0.05秒かかります。テストされた特定のカテゴリには、約6kの製品、23の異なるファセット、および2kの異なるファセットの名前と範囲の組み合わせが含まれています。FacetedQueryRunnerのコードを見た後ファセットクエリは、カウントを取得するためのすべてのファセット名と値の組み合わせに対するLuceneクエリ、および用語を取得するための各ファセット名に対するクエリをもたらすようです。実装の問題の1つは、クエリに関係なく、特定のファセット名のすべての個別の用語を取得することです。これにより、ほとんどの場合、ファセットの用語の数が大幅に減り、Luceneクエリの数が減ります。ここでパフォーマンスを向上させる1つの方法は、ファセット設定ドキュメントごとにMapReduceの計算結果セット(上記のとおり)を保存し、ファセットでさらにフィルタリングするときにすべての個別の用語を取得するためにクエリを実行することです。ただし、全体的なパフォーマンスはまだ遅すぎる可能性があります。