ค้นหา API กับ Apache Solr Search


34

ฉันใช้โมดูลApache Solr Searchใน Drupal 6 และกำลังค้นหา Search APIสำหรับการติดตั้ง Drupal 7 ฉันได้เห็นการสนทนาที่นี่แต่ฉันกำลังมองหาเหตุผลใด ๆ สำหรับการเลือกอย่างใดอย่างหนึ่ง

มีเหตุผลที่จะเลือกอย่างใดอย่างหนึ่งมากกว่าที่อื่น ๆ ? ถ้าเป็นเช่นนั้นทำไมหรือเพราะเหตุใด ฉันได้ยินมาว่าอาจมีปัญหาความซับซ้อนและ / หรือปัญหาด้านประสิทธิภาพการทำงานกับ Search API มันเป็นเรื่องจริงเหรอ?


ฉันจะไม่แนะนำ solr สำหรับการค้นหาหลายภาษา ขึ้นอยู่กับความสำคัญของการค้นหาคือการค้นหาภาษาหลายภาษาอาจใช้เวลานานมาก การตั้งค่าอาจเจ็บปวด สำหรับการค้นหาหลายภาษาภาษาของคุณจะต้องได้รับการสนับสนุนโดย solr มีกฎทางไวยากรณ์ที่จะต้องตั้งค่าสำหรับภาษาของคุณ นอกจากนี้คุณต้องติดตั้ง Java และ Solr เพื่อให้คุณไม่สามารถใช้โฮสติ้งที่ใช้ร่วมกันราคาถูก หากคุณกำลังพัฒนาเครื่องมือค้นหาคุณอาจต้องการใช้มัน หากคุณกำลังคำนวณทรัพยากรการพัฒนาแล้วการค้นหาไซต์ Payd google อาจเป็นตัวเลือกที่ดีกว่า! ฉันยังเป็นผู้ดูแลร่วมสำหรับ gss modulep
ram4nd

ทำไมถึงเป็นอย่างนั้น? มาตรฐานใด?
giorgio79

ฉันขอโทษฉันว่าการตั้งค่าอาจเจ็บปวดได้ สำหรับการค้นหาหลายภาษาภาษาของคุณจะต้องได้รับการสนับสนุนโดย solr มีกฎทางไวยากรณ์ที่จะต้องตั้งค่าสำหรับภาษาของคุณ นอกจากนี้เมื่อฉันดูโมดูลที่อยู่ในสถานะ devel และต้องการงานเพิ่มเติมเพื่อให้สิ่งต่าง ๆ ทำงานได้ แต่เป็นเครื่องมือค้นหาที่เร็วที่สุด ดังนั้นคุณต้องถามตัวเองว่าคุณสมบัติการค้นหาสำคัญอย่างไรสำหรับคุณ นอกจากนี้คุณต้องติดตั้ง java และ solr เพื่อให้คุณไม่สามารถใช้โฮสติ้งที่ใช้ร่วมกันราคาถูก
ram4nd

หนึ่งในสิ่งที่ฉันต้องมาที่ Apache Solr เมื่อเทียบกับ Search API คือการค้นหาตัวกรองแบบเลือกหลายตัว ด้วย Search API ดูเหมือนว่าจะเป็นไปไม่ได้ Solr ดูเหมือนจะมีตัวเลือกนี้
user219492

ฉันจะพูดถึงการสนับสนุนหลายเว็บไซต์: SearchAPI ไม่มีการสนับสนุนหลายเว็บไซต์ (ใช้ดัชนี SOLR เดียวกันเพื่อจัดเก็บเนื้อหาของเว็บไซต์หลายแห่ง) Apachesolr อนุญาตให้: 1. ดัชนีดัชนีเนื้อหาระบบหลายรายการในดัชนี SOLR เดียวกัน 2. กรองผลลัพธ์ตามเว็บไซต์เฉพาะ 3. ทำการค้นหาเฉพาะในเว็บไซต์ท้องถิ่นกรองผลลัพธ์จากเว็บไซต์อื่น
thePanz

คำตอบ:


19

ตั้งแต่ปี 2558 เราสามารถเปรียบเทียบการค้นหา API กับ Apache Solr Search modules กับตัวเลข:

                   | Apache Solr Search  | Search API
Posted in:         | 2007                | 2010
Downloads:         | >2k                 | >20k
Reported installs: | >21k                | >64k
Total bugs:        | >1200               | >600
Active bugs:       | >200                | >170
Commits:           | >1.3k               | >1.5k

ซึ่งระบุทางเลือกที่ชัดเจน Search API ได้รับการพัฒนา 3 ปีหลังจากนั้นและสามารถใช้ประโยชน์จากคู่แข่งได้

ยิ่งไปกว่านั้น Search API ยังมอบสถาปัตยกรรมที่แตกต่างและยืดหยุ่นมากขึ้นและมีการบำรุงรักษาอย่างแข็งขันยิ่งขึ้น สิ่งที่สำคัญกว่านั้นคือมันรองรับDrupal 8รุ่นใหม่ล่าสุดแล้วและ Solr 5.xที่ Apachesolr ยังไม่มี

Search API เริ่มต้นใหม่และมีความยืดหยุ่นในการกำหนดค่ารวมถึงการรองรับการดู (สำหรับ Apachesolr คุณต้องมีโมดูลเพิ่มเติม) นอกจากนี้ยังมีโมดูลมากมายที่ขยายการใช้งาน

ประการที่สองเพื่อหลีกเลี่ยงปัญหาบางอย่างที่ชุมชนได้รับการแก้ไขสองครั้งเนื่องจากความแตกต่างในสถาปัตยกรรมของโมดูลเหล่านี้ในปัจจุบันมีความพยายามร่วมกันระหว่างสองโครงการเช่น:

  • การสร้างวิธีการทั่วไปในการแสดงบล็อก facets ผ่านFacet API (หรือเรียกว่าตัวกรอง)
  • สกีมาทั่วไปและไฟล์การกำหนดค่า solrconfig.xml
  • ผู้ดูแลทั้งสองทำงานร่วมกันและโอนย้ายคลาสการเชื่อมต่อจากโมดูล Apache Solr Search ไปยัง Search API

ที่มา: Battleplan for Search & Solr ใน Drupal 8ที่ Acquia

หมายเหตุไม่แนะนำให้ใช้ทั้งสองโมดูลในสภาพแวดล้อมเดียวกัน

สำหรับการวิเคราะห์ความแตกต่างทางเทคนิคเพิ่มเติมโปรดตรวจสอบรายละเอียดด้านล่าง

ค้นหา API

ภาพรวม API:

  • Framework สำหรับการสร้างการค้นหาได้อย่างง่ายดาย
  • บทคัดย่อจากแหล่งข้อมูลและการใช้งานแบ็กเอนด์
  • ระบบนิเวศขนาดใหญ่ที่มีส่วนขยายเช่นแบ็กเอนด์
  • การรวม Facet API
  • ใช้ API เอนทิตีอย่างหนัก

    • จัดเตรียมข้อมูลเมตา
    • ใช้สำหรับการกำหนดค่าดัชนีและเซิร์ฟเวอร์

คุณสมบัติส่วนขยาย:

  • ค้นหาการเติมข้อความอัตโนมัติ API
  • สิ่งที่แนบมา
  • การค้นหาที่บันทึกไว้
  • ที่ตั้ง
  • เส้นทาง Facets พริตตี้
  • Slider (ช่วงการค้นหา API)
  • และอื่น ๆ อีกมากมาย.

โครงสร้างพื้นฐาน:

โครงสร้างพื้นฐานของโมดูลค้นหา API Solr

คุณสมบัติดัชนี:

  • แหล่งข้อมูลที่แตกต่าง
  • แหล่งข้อมูลเดียว: เอนทิตี
  • ตาม Entity API:

    • แต่ละคุณสมบัติสามารถสร้างดัชนีได้
    • คุณสมบัติของหน่วยงานที่เกี่ยวข้องสามารถจัดทำดัชนี

วิธีกำหนดค่าดัชนีของคุณ - ฟิลด์:

วิธีกำหนดค่าดัชนีของคุณ - ฟิลด์ใน Search API Solr

ค้นหามุมมอง API:

  • สนับสนุนมุมมองแบบเต็ม
  • แสดงคุณสมบัติใด ๆ ของนิติบุคคล
  • ใช้ฟิลด์ใด ๆ ที่จัดทำดัชนีเป็นตัวกรองอาร์กิวเมนต์หรือเรียงลำดับ
  • รหัสส่วนใหญ่อ้างอิงจากการรวมการดูของ Entity API
  • โดยค่าเริ่มต้น: ข้อมูลที่ดึงมาผ่านโหลดเอนทิตี

    • สามารถข้ามได้ (การตั้งค่า "ดึงข้อมูลจาก Solr" ในเซิร์ฟเวอร์)
  • ทางเลือก: หน้าค้นหา API

ค้นหาสูตร API:

  • CRUD hooks สำหรับดัชนีและเซิร์ฟเวอร์
  • ตะขอสำหรับการเพิ่ม

    • แหล่งข้อมูล
    • แบ็กเอนด์
    • การเปลี่ยนแปลงข้อมูล
    • โปรเซสเซอร์
  • ฮุคใช้เมื่อทำดัชนีรายการ

  • Hook เริ่มทำงานเมื่อทำการค้นหา

Apachesolr

คุณสมบัติส่วนขยาย:

  • สิ่งที่แนบมา (ไม่สนับสนุนสื่อการเข้ารหัสที่กำหนดเองสำหรับสิ่งที่แนบมากับหน่วยงานอื่น ๆ )
  • ที่ตั้ง (ตำแหน่ง Apachesolr, ตำแหน่ง Apachesolr)

สูตร Apachesolr:

  • แพลตฟอร์มการค้นหาโอเพนซอร์สขององค์กร
  • มูลนิธิอาปาเช่
  • การค้นหาข้อความแบบเต็มการเน้นการค้นหาแบบเหลี่ยมเพชรพลอยการจัดกลุ่มการจัดการเอกสารที่หลากหลาย
  • กระจาย
  • การจำลองแบบ / ปรับขนาดได้
  • ชวา
  • REST HTTP และคำตอบใน XML / JSON และอื่น ๆ
  • ไม่สัมพันธ์

ที่มา: ค้นหาสไลด์โชว์ API เทียบกับ Apachesolr


ดูสิ่งนี้ด้วย:


เขียนบทความได้ดีมากขอบคุณ! คำถามที่ 1: เหตุใดจึงไม่แนะนำให้ใช้ทั้งสองโมดูลในสภาพแวดล้อมเดียวกัน คำถามที่ 2: ความแตกต่างของประสิทธิภาพระหว่างโมดูลมีน้อยมากในตอนนี้ (ฉันเข้าใจว่า Search API w / solr สามารถทำดัชนีหลายฟิลด์ได้ดังนั้นไม่ต้องโหลดเอนทิตีเพื่อแสดงเช่นภาพขนาดย่อพร้อมผลการค้นหาอีกต่อไป)
Jordan Magnuson

@JordanMagnuson 1. คุณไม่ได้ใช้ทั้งสองโมดูลในเวลาเดียวกันเพราะพวกมันไม่เข้ากันมากและเว็บไซต์ส่วนใหญ่นั้นเกี่ยวข้องกับการค้นหา Solr เพียงอินสแตนซ์เดียวดังนั้นจึงไม่เหมาะสมที่จะใช้ทั้งคู่ยกเว้นคุณ ไม่รังเกียจที่จะทำซ้ำงาน ตัวอย่างเช่นเมื่อคุณต้องการสร้างมุมมองการค้นหาบางโมดูลทั้งสองมีการรวมที่แยกต่างหากกับโมดูลมุมมองดังนั้นคุณจะต้องสร้างสองมุมมอง
kenorb

@JordanMagnuson 2. ฉันไม่แน่ใจเกี่ยวกับประสิทธิภาพฉันไม่เคยมีใครเฉพาะเจาะจงและบางทีมันอาจจะเปลี่ยนไปทุกรุ่น (ฉันใช้ Apachesolr มานานแล้ว) หากคุณใช้มุมมองและแง่มุมคุณมักจะใช้กลไกแคชมุมมองดังนั้นคุณไม่สนใจเวลาในการประมวลผลและ memcached แน่นอน APC / XCache เป็นต้นประสิทธิภาพขึ้นอยู่กับโครงสร้างของไซต์และวิธีการที่แต่ละโมดูลมีปฏิสัมพันธ์กัน อื่น ๆ
kenorb

ตลกที่ Search API นั้นมีการใช้งานมากกว่า แต่ Acquia แนะนำให้ใช้โมดูล Apache Solr docs.acquia.com/acquia-search/search-api#animated
AlxVallejo

@AlxVallejo ฉันคิดว่าพวกเขาแนะนำให้ใช้สำหรับการผลิตเพราะพวกเขามีไฟล์ Apachesolr config ที่มีเสถียรภาพและเขียนได้ดีเพื่อสนับสนุนอินสแตนซ์ Solr ของ Acquia Cloud (แบ่งปัน) Solr (นั่นเป็นเหตุผลเดียวที่ฉันเดา) และ Search API นั้นอยู่ในสถานะพัฒนา ดังนั้นความเสี่ยงที่เกี่ยวข้องรวมถึงไฟล์การกำหนดค่าที่จะต้องมีการปรับปรุงบ่อยขึ้น พวกเขาแนะนำโครงการขนาดใหญ่ของเราด้วย แต่หลังจากช่วงเวลาสั้น ๆ ในการเล่นและตรวจสอบข้อกำหนดของเราเราได้เปลี่ยนคำแนะนำเป็น Search API พวกเขาไม่มีไฟล์ปรับแต่งที่เสถียรอย่างไรก็ตามเราได้จัดเตรียมของเราเอง
kenorb

24

ฉันได้ลองใช้ทั้งคู่แล้วฉันสามารถพูดได้ว่า: มันขึ้นอยู่กับสถานการณ์ของคุณ

ในปัจจุบันการวางตลาด ApacheSolr Integration 7 ที่เสถียรสามารถทำดัชนีโหนดได้เท่านั้น ดังนั้นถ้าคุณมีเอนทิตีที่ไม่ใช่โหนดที่คุณต้องการทำดัชนีคุณต้องใช้แพทช์multientity ที่กำลังดำเนินการอยู่ ApacheSolr Integration สามารถเก็บข้อมูลที่แตกต่างกันมากมายของเนื้อหาเมื่อกำหนดค่าอย่างเหมาะสม

Search API ทำการเข้าถึงดัชนีและมีเนื้อหาที่ยอดเยี่ยมมากมายที่เขียนขึ้น อย่างไรก็ตาม Search API จะดึงข้อมูล ID ของข้อมูลที่คุณกำลังค้นหาเท่านั้น ซึ่งหมายความว่าการโหลดข้อมูลเพิ่มเติมนอกเหนือจาก ID จะต้องใช้ entity_load กดปุ่มฐานข้อมูลของคุณหรือเลเยอร์แคชที่คุณวางไว้ สำหรับไซต์ที่มีการค้นหาจำนวนมากอาจไม่ใช่โซลูชันที่ได้รับการปรับให้เหมาะสมที่สุด

นี่คือการนำเสนอที่ยอดเยี่ยมที่ drupalcon chicago เกี่ยวกับ ApacheSolr Integration module นาทีที่ 16 สำหรับการกล่าวถึง Search API


ภาพรวมที่น่ากลัว สิ่งที่ฉันอยากรู้ ขอบคุณ!
ข้าม

หากตอบคำถามของคุณเรียบร้อยแล้วคุณสามารถตั้งค่าสถานะเป็นคำตอบได้ไหม ขอบคุณ!
LSU_JBob

1
สำหรับคนที่คุณสงสัยตอนนี้ multientity อยู่ในสาขา dev ของการรวม apache solr ดังนั้นมันควรจะออกมาพร้อมกับเบต้าถัดไป
LSU_JBob

2
สำหรับผู้ที่อ่านหัวข้อนี้ .. ปัจจัยหนึ่งที่ทำให้ประสิทธิภาพลดลงคือ Search API อนุญาตให้ทำดัชนีและดึงข้อมูลโหนดได้ในขณะนี้ มีคือการอภิปรายผลการดำเนินงานที่นี่
ข้าม

1
คำตอบนี้ล้าสมัยดูที่drupal.org/node/1999392 search_api_solr ตอนนี้มีตัวเลือกหลายไซต์แล้วยังอนุญาตให้ส่งคืนไม่ใช่ NID การเติบโตอย่างมากในฐานการติดตั้งของ search_api_solr ในปี 2014 แซงหน้าการใช้งาน D7 ของ apachesolr
Duncanmoo

2

ฉันคิดว่าคุณต้องลองทั้งคู่และตัดสินใจอย่างชาญฉลาด แต่ให้พิจารณาอย่างจริงจังว่า apachesolr ยังไม่มีเบต้าสำหรับ Drupal 8

ใน Search API คุณไม่สามารถรวมเอนทิตีในดัชนี SearchAPI เดียวกัน ดังนั้นโปรไฟล์ผู้ใช้โหนดอยู่ในดัชนีที่แตกต่างกัน มีโมดูลที่ให้การค้นหาหลายดัชนีมันไม่ครอบคลุมความต้องการของฉัน แต่ YMMV หากคุณมีประเภทเนื้อหาและเขตข้อมูลจำนวนมากในดัชนีเดียวกันนิยามของดัชนีอาจไม่ได้ผลอย่างแน่นอน (NB SearchAPI D8 รายงานเพื่อสนับสนุนการค้นหาหลายดัชนี)

Apachesolr อนุญาตให้แก้ไขฟิลด์ตามเนื้อหาซึ่งอาจจะง่ายกว่า แต่ไม่มีความสามารถในการเพิ่มเนื้อหาที่เกี่ยวข้องลงในเอกสารอันที่จริงคาดว่าจะต้องเขียนโค้ดที่กำหนดเองเพื่อรวมข้อมูลจากการรวบรวมฟิลด์การอ้างอิงและอื่น ๆ สาขา Apachesolr D7 ไม่สนับสนุน ajax เว้นแต่ว่าคุณจะใช้มุมมอง แต่ใช้มุมมองที่คุณสูญเสีย facets ที่กล่าวว่า ... การปรับเปลี่ยนข้อมูลที่เก็บไว้ในดัชนีนั้นค่อนข้างง่ายหากคุณมีความสุขในการเขียนโค้ดใน hooks

แนวคิดของการค้นหารหัสเอนทิตีแล้วแสดงผลทีละรายการ (สามารถใช้โดยทั้งสองโมดูล) ดูเหมือนจะเป็นฝันร้ายของประสิทธิภาพการทำงาน แต่ถ้าคุณแคชเอนทิตีของคุณแสดงว่าอาจมีประสิทธิภาพมากกว่าการตอบสนองจากโซล

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.