問題タブ [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 投票する
1 に答える
374 参照

string - 分類用語を正規化するための正確なアルゴリズム?

私はショッピング比較サイトを開発していますが、プロジェクトは非常に進んだ段階にあります。さまざまなアフィリエイトネットワークからのマーチャントフィードを使用して、毎日5,000万の製品にインデックスを付けています。パフォーマンスのボトルネックの大部分を含め、私が抱えていた問題のほとんどはすでに解決されています。

私の問題は何ですか:まず、drupalでapache solrを使用していますが、この問題はdrupalまたはsolrに固有のものではありません。知識がなくても、問題ありません。

私たちは2000以上の異なる商人から製品フィードを受け取ります、そしてそれらのフィードは混乱しています。それらには特定のパターンはなく、各マーチャントは希望する方法でフィードを送信します。これに関してはすでに多くの問題を解決しましたが、1つ残っています。ファセットブラウジング機能の分類用語を正規化します。

Webサイトに「NarrowbyBrands」ブラウジングファセットがあるとします。ここで、100のマーチャントがMicrosoftの製品を提供するとします。ここで問題が発生します。データフィード「Microsoft」の「ブランド」列に入力するマーチャント、「Microsoft、Inc。」、「Microsoft Corporation」、「Products from Microsoft」など、マーチャントと最悪の間に特定のパターンはありません。 、一部の個々の商人は非常にずさんなので、同じデータフィードで同じブランドに対して異なる文字列を持っています。

これらの異なるブランドすべてがナビゲーションに表示されることは望ましくありません。インポートしたブランドを「good」ブランドテーブル(「MicrosoftCorporation」->「Microsoft」、「Products fromMicrosoft」->「Microsoft」など)に手動でマッピングするという問題に対する手動の解決策があります。データベースには10,000のブランドのようなものがあり、これは実行可能です。問題は、「作者」のような大きなものが付属している場合です。書籍をシステムにインポートすると、80万人を超える著者がいて、同じ問題が発生します。これは、手動マッピングでは実行できません。問題は同じです:「トム・マイク・アポストル」、「トム・M・アポストル」、「アポストル、トム・M」など。

許容できる精度(85%-95%の精度)でこの問題を自動的に解決する良い方法を知っている人はいますか?

助けてくれてありがとう!

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

drupal-6 - Drupal6ファセット検索

私はファセット検索と利用可能な表示スタイルをいじっており、環境を構成するときにカスタムモジュール内にカスタム表示を記述し、それを表示スタイルのリストに公開する方法があるかどうかを知りたいと思っていました。

ビューオプションを使用しましたが、ビューで希望する結果が得られません。

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

lucene - Lucene.NET ファセット検索

Solr を使用せずに、Lucene.NET でファセット検索を構築しています。現在のクエリ内のナビゲーション アイテムのリストを取得したいと考えています。正しい方向を向いていることを確認したいだけです。うまくいくアイデアを念頭に置いていますが、これが正しい方法かどうかはわかりません。

現時点での私の計画は、使用可能なすべてのフィルターの階層を作成し、ここで説明する手法を使用してリストを調べて、結果がゼロのフィルターを除外して、それぞれのカウントを取得することです。それは大丈夫ですか、それとも何か不足していますか?

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

lucene - .NETサイトのSolr

SQLServerデータベースでバックアップされたASP.NETサイトがあります。Lucene.NETを使用して、データベースのインデックス作成と検索を行っています。結果ページにファセット検索ナビゲーションを追加しています(ファセットは階層的なカテゴリツリーです)。私は昨日、ファセットに正しいテクニックを使用していることを確認するように頼みました。これまでに得たのはSolrを使用するための提案だけですが、Solrは私が必要としない多くのことを行います。

Solrのファセット処理がBertWillemsによってここで説明されているものとひどく異なるかどうか、Solrのソースコードに精通している人から本当に知りたいです。基本的に、各ファセットにLuceneフィルターがあり、そこからビット配列を取得し、配列内の設定されたビットをカウントします。

そもそも私は階層的であるため、これをかなりうまく最適化できるはずだと思っていますが、このデザインが検索パフォーマンスに与える影響を大幅に過小評価しているのではないかと思います。Solrが速くなければ、それを使用しても何も得られません。

0 投票する
4 に答える
2548 参照

database-design - ファセット検索のデータベース構造

顧客がebuyer.comNewegg.comと同じスタイルでカテゴリと分類を介して製品検索を絞り込むことができるように、ファセット検索ツールが必要な e コマース サイトを作成しています(左側のメニューを参照)。

私は当初、EAV 構造に似たデータベースの設計に飛び込みました (当時はこれが何であるかはわかりませんでした)。最初はこれが理想的でした。無制限のカテゴリ、サブカテゴリ、およびその他の製品分類 (つまり、色、顧客が特定の製品を見つけるために使用できるサイズ、受信者)。しかし、条件を使用して SQL クエリを作成しようと試み始めたとき、AND通常の単純なクエリを記述するのが非常に長く複雑になることに気付きました。

SO のさまざまな投稿や Google の記事を数時間読んだ後、この方法を続けた場合の悪夢に気づきました。

質問

ebuyer.comNewegg.comなどのサイトは、ファセット検索をどのように設計したのでしょうか?

別の方法を見逃したのでしょうか、それとも単純に EAV 構造を採用したのでしょうか? Lucene/Solr のようなエンタープライズ ソリューションは避けたいと考えています。

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

mysql - 検索エンジン フィルター:: 各フィルターの結果を事前にカウントする

車の検索エンジンを構築しています。検索結果を表示すると、左側に結果をより具体的にするためのフィルターがあります。選択した検索に各フィルターが設定されている場合に存在する結果の合計を表示できるようにしたいと考えています。

たとえば、フィルタは次のようになります。

車種
アルファロメオ (500)
BMW (2330)
....

カラー
ブラック (1000)
ホワイト (800)
....

そのために何十回も選択せずに効率的な括弧内の数を計算したい。このデータをキャッシュする方法、またはそのための特別なテーブルを作成する方法はありますか?

フィルタが追加されるたびに、新しい結果に従って合計を再計算する必要があることに注意してください。

ここで例を確認できます

それはかなり難しいと思います..
助けてくれてありがとう!
ディミトリス

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

mysql - neweggのようなすべての製品属性/フィルターの合計数を取得する方法

newegg.com にアクセスすると (ほんの一例です)、製品を閲覧しているときに、左側のサイドバーの各製品属性の横にアイテム数が表示されます。

一部のアイテムには非常に多くの属性があり、製品フィルターには非常に多くの異なる構成があるため、どのようにしてこれらすべての合計を非常に高速に計算するのでしょうか?

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

solr - インデックスを作成して分散SOLRにAdd()するHadoop ...これは可能ですか?Nutchを使用する必要がありますか?..Cloudera?

MapReduceフレームワークを使用してインデックスを作成し、それを分散Solrに追加することはできますか?

インターネットを介して転送され、データセンター(またはAmazon)に保存される情報(ログファイルとドキュメント)のバーストがあります。複製されたSolrインストールによって解析、索引付け、そして最終的に検索可能にする必要があります。

これが私の提案したアーキテクチャです:

  • MapReduceフレームワーク(Cloudera、Hadoop、Nutch、さらにはDryadLinq)を使用して、これらのドキュメントをインデックス作成用に準備します
  • これらのドキュメントをLucene.NET/Lucene(java)互換のファイル形式にインデックス付けします
  • そのファイルをすべてのSolrインスタンスにデプロイします
  • その複製されたインデックスをアクティブ化する

上記が可能であれば、MapReduceフレームワークを選択する必要があります。Clouderaはベンダーがサポートしており、Hadoopのインストールに含まれていないパッチがたくさんあるので、一見の価値があると思います。

MatpReduceフレームワークを選択したら、ドキュメント(PDF、DOCx、DOC、OLEなど)をトークン化し、インデックスを作成し、インデックスをSolrインスタンスにコピーして、で検索できるように何らかの方法で「アクティブ化」する必要があります。実行中のインスタンス。この方法論は、RESTインターフェースを介してSolrにドキュメントを送信するよりも優れていると思います。

私が.NETを写真に取り入れた理由は、私たちがほとんど.NETショップだからです。私たちが持つ唯一のUnix/JavaはSolrであり、Solrnetを介してRESTインターフェースを活用するフロントエンドを備えています。

あなたの経験に基づいて、このアーキテクチャはどのように見えますか?何か問題/問題がありますか?どんなアドバイスができますか?

ファセット検索を失うために私何をすべきではありませんか?Nutchのドキュメントを読んだ後、それはファセットを行わないと言ったと思いますが、私はこのソフトウェアの背景が十分でなく、それが何を言っているのかを理解できないかもしれません。

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

solr - 複雑なデータの Solr スキーマ設定ヘルプ

複雑な検索を行うために、Solr でフィールドを設定しようとしています。

ユーザーが、営業時間と提供されるサービスに基づいて、1 日と時間帯に組織を検索できるようにしたいと考えています。

例:Find all organizations open Monday at 3pm offering childcare service and Spanish speakers.

フィールドは次のとおりです。

範囲クエリで配列フィールドを使用して任意のフィールドを検索できることはわかっていますが、関連するデータを関連付ける方法がわかりません。託児サービスが水曜日のみ提供されている場合、月曜日を検索したときに組織が表示されないようにします。

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

drupal - Drupal: ファセット検索ブロックの再利用

Drupal のファセット検索モジュールは、新しいファセット検索環境 (現在の検索、ガイド付き検索、関連など) ごとに一連のブロックを作成します。

書籍などのファセット検索環境を作成する場合は、ベース パス browse/books開始ページを として設定できますbrowse/books/results。ファセット検索ブロックを表示するには、ブロックのページ固有の表示設定を「リストされたページのみに表示」として設定し、実際のページを次のように設定します。

質問: 別のランディング ページで「ガイド付き検索」ブロックを再利用したいと考えています。ランディング ページには、使用可能な検索用語のリスト ( sidebar-left) が表示され、ページの残りの部分が表示されます。

これまでのところ、「リストされたページのみに表示」のリストに別のパスを追加するだけでは何の効果もありません。