0

ブランド、サイト、商品カテゴリの 3 つのテーブルがあります。3 つのテーブルすべてで同時に検索機能を実行したいと考えています。solr を使用して検索を実行しました。以前は、一度に 1 つずつ検索を行っていました。つまり、ユーザーが「adidas」と入力した場合、ブランド テーブルを検索していて、取得できなかった場合は、サイト テーブルなどを検索していました。得られた結果に基づいて、そのbrand_idまたはsite_idまたはcategory_idを使用し、main_nav_urlテーブルから必要な列を取得して、main_nav_urlなどの他のテーブルを検索していました。後で、「adidas」の名前がブランドとサイトの両方のテーブルに存在する場合、ブランドの検索結果しか得られないなど、この競合に遭遇しました。

得られた結果に基づいて、brand-id と site_id category_id を抽出し、main_nav_url テーブルでもう 1 つの検索を実行して、3 つのテーブルすべてを同時に検索できるこの問題を解決するのを手伝ってください。

4

1 に答える 1

0

答えがわかりました。

solr 検索を個別に実行して、brand_id、site_id、および category_id を取得します。対応する ID を配列に格納します。例えば

@storesearch.results.each do |result|
    siteids << result.id
end

brandids、siteids、catids の長さに応じて、main_nav_url テーブルで solr 検索を実行します。この場合、9 つの異なるケースに対して solr 検索を実行する必要があります。そのうちの 1 例を以下に示します。

if(siteids.length == 0 && brandids.length != 0 && catids.length != 0) @searchresults=MainNavigationUrl.search do any_of do with :brand_id, brandids[0..brandids.length] with :main_category_id, catids [0..catids.length] 終わり 終わり

于 2013-04-24T07:30:43.020 に答える