Spring Java Web サイトの MySql データベースには、次のテーブルがあります。
- お客様
- 製品
- PRODUCT_CUSTOMER_XREF (商品を購入した顧客)
- CUSTOMER_CUSTOMER_XREF (他の顧客と友人関係にある顧客)
SOLR では、PRODUCT_ID という一意の ID を持つすべての製品にインデックスを付けました。
私の仕事
- 現在ログインしている CUSTOMER の友人が過去に購入した PRODUCTS を表示します。
- 過去に行った顧客の友人の製品説明と製品レビューを顧客が検索できるようにする
私が使用した手順
- SQL クエリ現在ログインしている CUSTOMER の友人を取得します (500 の CUSTOMERS を返します)
- JOIN SQL QUERYすべての友人 CUSTOMER が購入した PRODUCT(s) を取得します (98,000 PRODUCTS_ID を返します)。これはおそらく500,000を返す可能性があります
- SOLR クエリid:(1 2 3 4 5 ....98000) は maxBooleanClause 例外を返します。
- MySQL クエリ- 返品商品 ID を購入またはコメントした顧客の友人を取得します。
問題- solr クエリ
- これは maxBooleanClause 例外を返すため、SOLR で 98,000 以上の製品をクエリできません。solr-config.xml ファイルで maxBoolean を増やすことはできますが、この数が 10 万単位であることを考えると、これは悪い習慣のように思えます。
- 同じフィールドに 98,000 以上のクエリを追加できますが、これも悪い習慣のように思えます。
- HTTP ポスト経由で 98,000 以上の ID を SOLR サーバーに送信するにはコストがかかります。
誰かが解決策を手伝ってくれますか?
追記: 特定の製品を購入またはコメントしたすべての CUSTOMER_ID を 1 つの番号またはトークンまたは何らかの種類にグループ化し、ログインしている CUSTOMER の ID の友人 ID がそのグループに属しているかどうかを確認する方法があるかどうかを考えていました。しかし、まだ式を考え出していません。