การเลือกเซิร์ฟเวอร์ค้นหาข้อความแบบเต็มแบบสแตนด์อะโลน: สฟิงซ์หรือ SOLR [ปิด]


192

ฉันกำลังมองหาเซิร์ฟเวอร์การค้นหาข้อความแบบสแตนด์อโลนที่มีคุณสมบัติต่อไปนี้:

  • ต้องดำเนินการเป็นเซิร์ฟเวอร์แบบสแตนด์อโลนที่สามารถให้บริการการร้องขอการค้นหาจากไคลเอนต์หลาย
  • ต้องสามารถทำ "การทำดัชนีจำนวนมาก" โดยการจัดทำดัชนีผลลัพธ์ของแบบสอบถาม SQL: พูดว่า "SELECT id, text_to_index จากเอกสาร";
  • ต้องเป็นซอฟต์แวร์เสรีและต้องทำงานบน Linux ที่มี MySQL เป็นฐานข้อมูล
  • ต้องเร็ว (กฎการค้นหาข้อความแบบเต็มภายในของ MySQL)

ทางเลือกที่ฉันพบว่ามีคุณสมบัติเหล่านี้คือ:

  • Solr (ขึ้นอยู่กับ Lucene)
  • ElasticSearch (ขึ้นอยู่กับ Lucene)
  • บุคคลลึกลับ

คำถามของฉัน:

  • พวกเขาเปรียบเทียบอย่างไร
  • ฉันพลาดทางเลือกอื่นหรือไม่?
  • ฉันรู้ว่าแต่ละกรณีการใช้งานแตกต่างกัน แต่มีบางกรณีที่ฉันไม่ต้องการใช้แพคเกจแน่นอนหรือไม่?

1
คุณจัดการกับ Lucene ไหม? Solr เป็นผู้ให้บริการด้านบนของ lucene ดังนั้น Lucene ที่ตรงไปตรงมาอาจเป็นไปได้
เดฟ

Lucene มีโหมดเซิร์ฟเวอร์แบบสแตนด์อโลนหรือไม่ ฉันคิดว่านั่นเป็นหนึ่งในสิ่งที่เพิ่มเข้ามา SOLR? ฉันยังไม่ได้ตัดออกอะไร - ดังนั้นรู้สึกฟรีเพื่อสนับสนุน Lucene ว่าเป็นตัวเลือกที่ดีที่สุดที่ได้รับความต้องการ :-)
knorv

mausch: Java เป็นหลัก แต่ก็เป็นภาษาอื่นด้วย
knorv

ส่วนตัวฉันชอบสฟิงซ์ อย่างไรก็ตามในระหว่างโครงการ "ใหญ่" เมื่อเร็ว ๆ นี้ผู้สมัครรุ่นล่าสุด (0.9.9-rc2) ได้แสดงข้อบกพร่องของตัวหยุดเมื่อใช้อาร์เรย์หลายค่า (MVA) มันจะสุ่มผลลัพธ์! ดังนั้นเราจึงย้ายไปที่ SOLR เพื่อหลีกเลี่ยงสิ่งนี้ เมื่อ SOLR ขึ้นและทำงานได้ดีและไม่มีข้อผิดพลาดในการแสดง
pchap10k

2
คุณดูที่ elasticsearch.com หรือไม่?
FYA

คำตอบ:


327

ฉันใช้ Solr มาเกือบ 2 ปีแล้วและไม่เคยใช้สฟิงซ์มาก่อนดังนั้นฉันจึงลำเอียง อย่างไรก็ตามฉันจะพยายามทำให้มันเป็นไปตามวัตถุประสงค์โดยอ้างอิงเอกสารหรือคนอื่น ๆ ฉันจะนำแผ่นแปะไปที่คำตอบของฉันด้วย :-)

ความคล้ายคลึงกัน:

  • ทั้ง Solr และ Sphinx ตอบสนองทุกความต้องการของคุณ มันเร็วและออกแบบมาเพื่อจัดทำดัชนีและค้นหาแหล่งข้อมูลขนาดใหญ่ได้อย่างมีประสิทธิภาพ
  • ทั้งสองมีรายการเว็บไซต์ที่มีผู้เข้าชมจำนวนมากที่ใช้ไซต์เหล่านั้น ( Solr , Sphinx )
  • ทั้งสองให้การสนับสนุนเชิงพาณิชย์ ( Solr , Sphinx )
  • ทั้งสองข้อเสนอไคลเอนต์ API ผูกสำหรับหลายแพลตฟอร์ม / ภาษา ( Sphinx , Solr )
  • ทั้งสองสามารถกระจายเพื่อเพิ่มความเร็วและความจุ ( สฟิงซ์ , Solr )

นี่คือความแตกต่างบางประการ:

คำถามที่เกี่ยวข้อง:


4
พูดคุยเกี่ยวกับ devs ผู้ต้องหาทั้ง Solr และ Lucene มันดูเหมือนว่าพวกเขาได้รวมสองผลิตภัณฑ์ที่ทำให้การพัฒนาต่อไปได้ง่ายขึ้นและเร็วขึ้น - lucidimagination.com/blog/2010/03/26/...
jimmystormig

3
@Stann: เหรอ? ฉันใช้ Solr มาเกือบ 5 ปีแล้วและไม่จำเป็นต้องเขียน Java บรรทัดเดียวเลย
Mauricio Scheffer

@MauricioScheffer คุณคิดว่ารหัส java จะเร็วกว่า C ++ หรือไม่ นี่คือการเปรียบเทียบที่ทำโดย Bill Karwin และ Sphinx มีการค้นหาสิ่งที่เร็วกว่า lucene 10 เท่า (และ solr ต้องช้ากว่านี้) slideshare.net/billkarwin/ ......
Stann

3
@Stann: คุณคิดว่าคุณต้องการประสิทธิภาพมากกว่า whitehouse.gov, Netflix, The Guardian, digg หรือเพียงแค่ตั้งชื่อเว็บไซต์ไม่กี่แห่งที่ใช้ Solr? wiki.apache.org/solr/PublicServers
Mauricio Scheffer

3
นี่คือคำตอบของสฟิงซ์ที่เป็นคู่ที่ดีสำหรับคำตอบนี้เกี่ยวกับ Solr
New Alexandria

48

เว้นแต่คุณจะต้องการขยายฟังก์ชันการค้นหาในลักษณะที่เป็นกรรมสิทธิ์ใด ๆ สฟิงซ์คือทางออกที่ดีที่สุดของคุณ

ข้อดีสฟิงซ์:

  1. การพัฒนาและตั้งค่าทำได้เร็วกว่า
  2. การรวม (และเร็วกว่า) ที่ดีขึ้นมาก นี่คือคุณสมบัตินักฆ่าสำหรับเรา
  3. ไม่ใช่ XML นี่คือสิ่งที่ในที่สุดปกครอง Solr สำหรับเรา เราต้องส่งชุดผลลัพธ์กลับมาค่อนข้างใหญ่ (คิดว่าเป็นร้อย ๆ ผลลัพธ์) แล้วรวมมันเข้าด้วยกันตั้งแต่การรวม Solr ขาดไป ระยะเวลาในการทำให้เป็นอันดับจากและไปถึง XML เป็นผลการดำเนินงานที่ถูกฆ่าตายอย่างสมบูรณ์ สำหรับชุดผลลัพธ์ขนาดเล็กมันก็ดีมาก
  4. เอกสารที่ดีที่สุดที่ฉันเคยเห็นในแอปโอเพ่นซอร์ส

ข้อดีของ Solr:

  1. สามารถยืดขยายได้
  2. สามารถกดได้โดยตรงจากเว็บแอปนั่นคือคุณสามารถทำการค้นหาแบบอัตโนมัติได้ที่เซิร์ฟเวอร์ Solr ผ่าน AJAX โดยตรง

29
Solr มีนักเขียนการตอบสนองจำนวนมากนอกเหนือจาก xml รวมถึง JSON, PHP, Ruby, Python และรูปแบบไบนารีของจาวา: lucene.apache.org/solr/api/org/apache/solr/request/ …
Mauricio Scheffer

24
ฉันพูดถึงว่าเอกสารของ Solr / Lucene แย่แค่ไหน? การรูทผ่าน Javadocs เพื่อเข้าใจการทำงานไม่ใช่แนวคิดของเอกสาร
larf311

3
ฉันควรจะได้เชื่อมโยงกับวิกิพีเดีย: wiki.apache.org/solr/...
เมาริซิโอ Scheffer

2
ฉันใช้เวลาทั้งวันเพื่อแก้ไขข้อผิดพลาดในการติดตั้งสฟิงซ์ 0.9.9 บน mac ของฉัน จนถึงตอนนี้ก็ยังไม่ทำงาน มันเป็นรถบั๊กกี้ ฉันใช้วิธีที่แนะนำมาก ฉัน givin up น่าผิดหวังจริง ๆ ...
lkahtz

เอกสารของ solr ไม่ค่อยดีเท่าสฟิงซ์ แต่ชุมชนมีขนาดใหญ่ และฉันสามารถหาได้ทุกอย่างโดยการอ่านซอร์สโค้ดของ solr
Tyler Long

21

หมายเหตุ: มีผู้ใช้หลายคนที่มีคำถามเดียวกันในใจ

ดังนั้นเพื่อตอบคำถาม:

อันไหนและเพราะอะไร

  • ใช้Solrหากคุณตั้งใจจะใช้ในเว็บแอพ (เครื่องมือค้นหาเว็บไซต์ตัวอย่าง) แน่นอนว่ามันจะยอดเยี่ยมด้วย API ของมัน คุณจะต้องมีพลังสำหรับเว็บแอพอย่างแน่นอน

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

ทางเลือก

แม้ว่าสิ่งเหล่านี้จะเป็นยักษ์ใหญ่ แต่ก็ยังมีอีกมากมาย นอกจากนี้ยังมีผู้ที่ใช้สิ่งเหล่านี้เพื่อเสริมสร้างกรอบงานที่กำหนดเอง ดังนั้นฉันจะบอกว่าคุณไม่ได้พลาดจริงๆ แม้ว่าจะมีหนึ่งelasticsearchที่มีฐานผู้ใช้ที่ดี


13
ช่วงเวลาที่น่าอึดอัดใจเมื่อฉันอ่านคำตอบนี้หลังจากหนึ่งปีครึ่งและคลิกที่ upvote และดูว่าฉันเขียนคำตอบนี้ด้วยตัวเอง ฮ่า ๆ. : DA เพิ่มเข้ามาเล็กน้อยจากสิ่งนี้แม้ว่าหลังจากผ่านไป 18 เดือนแล้วการใช้ยางพาราก็กลายเป็นทางเลือกที่ดีและมีชุมชนที่ดีเช่นกัน เจ๋งบอนไซสุดยอด!
Augiwan

ออกัสตั! ช่วงเวลาที่น่าอึดอัดใจ: D ดังนั้นสำหรับเว็บแอพหลามคุณคิดว่าอะไรดีที่สุดตอนนี้ การค้นหาที่ยืดหยุ่นหรือไม่ขึ้นอยู่กับประสิทธิภาพการใช้งานหน่วยความจำและความสะดวกในการติดตั้งแนวคิดใด ๆ
Mevin Babu

มันไม่สำคัญว่าภาษาใดที่เว็บแอปเขียนขึ้นเลือกตามกรณีการใช้งานของคุณ!
Augiwan

19

ฉันใช้สฟิงซ์มาเกือบปีแล้วและมันก็น่าทึ่งมาก ฉันสามารถทำดัชนี 1.5 ล้านเอกสารในเวลาประมาณหนึ่งนาทีบน MacBook ของฉันและยังเร็วกว่าบนเซิร์ฟเวอร์ ฉันใช้สฟิงซ์เพื่อ จำกัด การค้นหาสถานที่ภายในละติจูดและลองจิจูดที่เฉพาะเจาะจงและรวดเร็วมาก นอกจากนี้วิธีการจัดอันดับผลลัพธ์นั้นปรับได้มาก ง่ายต่อการติดตั้งและตั้งค่าถ้าคุณอ่านบทแนะนำหรือสองรายการ เกือบ 1.0 สถานะ แต่ผู้ที่ได้รับการปล่อยตัวของพวกเขานั้นแข็งแกร่งมาก


3
การค้นหาทางภูมิศาสตร์สามารถทำได้ใน Solr ด้วยปลั๊กอินLocalSolr
Mauricio Scheffer

1
คุณสามารถ INDEX 1.5 ล้านเอกสารในหนึ่งนาที? ฉันไม่สามารถเข้าใกล้การอ่านจำนวนมากได้โดยตรงจากไฟล์ 7zip (ไม่ได้เขียนส่งไปยังคอนโซล) บน SSD ของฉัน! และมันคือปี 2017! เอกสารประเภทนี้คืออะไร? มันค่อนข้างเหลือเชื่อ หมายเหตุ: ฉันหวังว่าคุณไม่ได้หมายถึงค้นหาดัชนี 1.5 ล้านในหนึ่งนาที การค้นหาดัชนีที่มี 1.5 ล้านเอกสารควรยังคงกลับมาในไม่กี่วินาที (แม้ในปี 2009)
FastAl

2

Lucene / Solr ดูเหมือนจะโดดเด่นมากขึ้นและใช้เวลานานในการทำธุรกิจและชุมชนผู้ใช้ที่แข็งแกร่งขึ้น imho ถ้าคุณสามารถแก้ไขปัญหาการตั้งค่าเริ่มต้นได้เนื่องจากบางคนอาจต้องเผชิญกับปัญหา (ไม่ใช่พวกเรา) ฉันจะบอกว่า Lucene / Solr เป็นทางออกที่ดีที่สุดของคุณ


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