2013-04-23 61 views
0

我有三個表格說品牌,網站和項目類別。我想同時在所有三個表中執行搜索功能。我用solr來執行搜索。以前我一次只進行一次搜索。這意味着如果用戶輸入'adidas',那麼我在品牌表中搜索,如果沒有得到,那麼我正在搜索網站表格等等。基於獲得的結果,我在其他表中搜索main_nav_url,使用brand_id或site_id或category_id並從main_nav_url表中獲取所需的列。後來我遇到了這種衝突,就好像'阿迪達斯'這個名字出現在兩個品牌和網站中一樣,我只得到品牌的搜索結果。索爾在多個表中的軌道搜索

請幫我解決這個問題,我可以根據獲得的結果提取他們的brand-id和site_id category_id同時搜索所有三個表,並在main_nav_url表中執行一個更多搜索。

+0

你好,請參見「洗劫寶石」搜索寶石它幫助使用「高級搜索查詢」在時間來搜索與multipale表數據。請參閱演員表:370。 – 2013-04-23 05:57:02

回答

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搜索。在這種情況下,必須執行solr搜索9種不同的情況。下面顯示了1個案例。

如果(siteids.length == 0 & & brandids.length = 0 & & catids.length = 0!) @ SearchResult所= MainNavigationUrl.search做 any_of做 有:brand_id,brandids [0 .. brandids.length] 有:main_category_id,catids [0..catids.length] 結束 結束