ค้นหา Solr ในหลายตารางในราง

ฉันมีตารางสามตารางที่บอกว่าแบรนด์ ไซต์ และหมวดหมู่รายการ ฉันต้องการใช้ฟังก์ชันการค้นหาในทั้งสามตารางพร้อมกัน ฉันใช้ solr เพื่อทำการค้นหา ก่อนหน้านี้ฉันค้นหาทีละครั้ง นั่นหมายความว่าหากผู้ใช้ป้อน 'adidas' แสดงว่าฉันกำลังค้นหาในตารางแบรนด์ หากไม่ได้รับ ฉันก็กำลังค้นหาในตารางไซต์และอื่นๆ จากผลลัพธ์ที่ได้รับ ฉันกำลังค้นหาในตารางอื่นพูดว่า main_nav_url โดยใช้ brand_id หรือ site_id หรือ category_id และรับคอลัมน์ที่ต้องการจากตาราง main_nav_url ต่อมาฉันเจอข้อขัดแย้งนี้เหมือนกับว่าชื่อ 'adidas' มีอยู่ในทั้งแบรนด์และตารางไซต์ ฉันจะได้รับเฉพาะผลการค้นหาของแบรนด์เท่านั้น

โปรดช่วยฉันในการแก้ปัญหานี้ โดยที่ฉันสามารถค้นหาทั้งสามตารางพร้อมกัน โดยขึ้นอยู่กับผลลัพธ์ที่ได้รับ แยก brand-id และ site_id category_id และทำการค้นหาอีกครั้งหนึ่งในตาราง main_nav_url


person user2218532    schedule 23.04.2013    source แหล่งที่มา
comment
สวัสดี ดูอัญมณีค้นหา Ransack gem ซึ่งช่วยในการค้นหาข้อมูลด้วยหลายตารางในแต่ละครั้งโดยใช้คำค้นหาขั้นสูง โปรดดูบทช่วยสอนเกี่ยวกับรางหล่อ: 370   -  person Bajirao Pheshwe    schedule 23.04.2013


คำตอบ (1)


ฉันได้รับคำตอบแล้ว

ทำการค้นหา solr แยกกันเพื่อรับ brand_id,site_id และ category_id เก็บรหัสที่เกี่ยวข้องไว้ในอาร์เรย์ ตัวอย่างเช่น

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

ขึ้นอยู่กับความยาวของ brandids, siteids, catids ทำการค้นหา solr ในตาราง main_nav_url ในกรณีนี้ต้องทำการค้นหา solr 9 กรณีที่แตกต่างกัน 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] ปลาย ปลาย

person user2218532    schedule 24.04.2013