Вибір автономного повнотекстового сервера пошуку: Сфінкса чи SOLR? [зачинено]


192

Я шукаю автономний повнотекстовий сервер пошуку з такими властивостями:

  • Повинен діяти як автономний сервер, який може обслуговувати пошукові запити від декількох клієнтів
  • Потрібно мати можливість "масової індексації" шляхом індексації результату запиту SQL: скажіть "SELECT id, text_to_index ВІД документів;"
  • Повинно бути вільним програмним забезпеченням і повинно працювати на Linux із MySQL як базою даних
  • Повинно бути швидким (виключає внутрішній повнотекстовий пошук MySQL)

Я знайшов альтернативи, які мають ці властивості:

  • Solr (заснований на люцені)
  • ElasticSearch (також заснований на Lucene)
  • Сфінкс

Мої запитання:

  • Як вони порівнюються?
  • Я пропустив якісь альтернативи?
  • Я знаю, що кожен випадок використання різний, але чи є певні випадки, коли я точно не хотів би використовувати певний пакет?

1
Ви виключали використання прямого луцена? Solr - це послуга на вершині люцена, тому прямий Lucene міг би стати можливим.
Дейв

Чи є у Lucene автономний серверний режим? Я думав, що це одне із речей, які додав SOLR? Я нічого не виключав - тож
сміливо захищайте Люцена,

mausch: головним чином Java, але й інші мови.
knorv

Особисто мені подобається Сфінкс. Однак, під час «великого» проекту нещодавно, останній кандидат випуску (0,9,9-rc2) мав показувати пробкові пробки під час використання багатозначних масивів (MVA). Це були б випадкові результати! Тому ми переїхали до SOLR, щоб обійти це. Після того, як SOLR піднявся та працює, продуктивність була чудова, і без помилки пробкового шоу.
pchap10k

2
Ви подивилися на elasticsearch.com?
FYA

Відповіді:


327

Я вже майже 2 роки успішно використовую Solr, і ніколи не використовував Сфінкса, тому я, очевидно, упереджений. Однак я спробую дотримати його об'єктивним шляхом, цитуючи документів або інших людей. Я також візьму патчі на свою відповідь :-)

Подібність:

  • І Solr, і Sphinx задовольняють всі ваші вимоги. Вони швидкі та розроблені для ефективного індексування та пошуку великих масивів даних.
  • Обидва мають довгий список сайтів із високим трафіком, які використовують їх ( Solr , Sphinx )
  • Обидва пропонують комерційну підтримку. ( Солр , Сфінкс )
  • Обидва пропонують клієнтські прив’язки API для декількох платформ / мов ( Sphinx , Solr )
  • І те й інше можна розподілити для збільшення швидкості та потужності ( Сфінкс , Солр )

Ось деякі відмінності:

Пов’язані запитання:


4
Якщо говорити про те, що розробники зосереджуються на Solr та Lucene, то, схоже, вони об'єднали два продукти, що полегшує та швидше подальший розвиток - lucidimagination.com/blog/2010/03/26/… .
jimmystormig

3
@Stann: як так? Я використовував Solr майже 5 років тому і мені ніколи не потрібно було писати жодного рядка Java.
Маурісіо Шеффер

@MauricioScheffer Ви дійсно думаєте, що код Java буде швидшим, ніж C ++. Ось порівняння , зроблене Біллом Karwin і Сфінкса там опитує речі в 10 разів швидше , ніж Lucene (і Solr Have повинен бути навіть повільніше , ніж.) Slideshare.net/billkarwin / ...
Стан

3
@Stann: чи дійсно ти вважаєш, що тобі потрібна більша продуктивність, ніж whitehouse.gov, Netflix, The Guardian, digg, лише щоб назвати кілька веб-сайтів за допомогою Solr? wiki.apache.org/solr/PublicServers
Маурісіо Шеффер

3
Ось відповідь на Сфінкс, яка є гарною парою на цю відповідь на Солр
Нова Олександрія

48

Якщо вам не потрібно розширити функцію пошуку будь-яким власним способом, Sphinx - це найкраща ставка.

Переваги сфінкса:

  1. Розробка та налаштування проходять швидше
  2. Набагато краща (і швидша) агрегація. Це було вбивчою рисою для нас.
  3. Не XML. Це те, що врешті-решт виключило для нас Solr. Нам довелося повернути досить великі набори результатів (подумайте сотні результатів), а потім їх самостійно зібрати, оскільки бракувало Solr агрегації. Кількість часу на серіалізацію до та від XML просто абсолютно знищила продуктивність. Хоча для невеликих наборів результатів це було чудово.
  4. Найкраща документація, яку я бачив у програмі з відкритим кодом

Переваги Solr:

  1. Можна продовжити.
  2. Може вдарити його безпосередньо через веб-додаток, тобто, ви можете мати автоматичні завершення пошуку, які потрапляють безпосередньо на сервер Solr через AJAX.

29
У Solr є багато авторів відповіді, крім xml, включаючи JSON, PHP, Ruby, Python та двійковий формат java: lucene.apache.org/solr/api/org/apache/solr/request/…
Маурісіо Шеффер

24
Я згадав, наскільки жахлива документація Solr / Lucene? Наявність корінства через Javadocs для з'ясування функціональності - це не моя ідея документації.
larf311

3
Я повинен був пов’язатись із вікі: wiki.apache.org/solr/…
Маурісіо Шеффер

2
Я витрачаю цілий день, виправляючи інсталяційну помилку сфінкса 0,9,9 на своєму mac. Поки що це все ще не працює. Це так баггі. Я використовував дуже запропоновані способи. Я жив вгору
Дійливо

Документація Solr не настільки гарна, як сфінкса. але громада велика. І я завжди можу все зрозуміти, прочитавши вихідний код solr.
Тайлер Лонг

21

Примітка. Є багато користувачів з тим самим питанням на увазі.

Отже, щоб відповісти на питання:

Який і чому?

  • Використовуйте Solr, якщо ви маєте намір використовувати його у своєму веб-додатку (пошукова система прикладу). Це, безумовно, виявиться чудовим, завдяки своєму API. Вам, безумовно, потрібна ця потужність для веб-програми.

  • Використовуйте Сфінкс, якщо хочете реально швидко шукати тонни документів / файлів. Він також індексує дуже швидко. Я рекомендую не використовувати його в додатку, який включає JSON або розбір XML для отримання результатів пошуку. Використовуйте його для прямого пошуку в дБ. Він чудово працює на MySQL.

Альтернативи

Хоча це гіганти, їх набагато більше. Крім того, є такі, які використовують їх для живлення власних кадрів. Отже, я б сказав, що ви насправді не пропустили жодного. Хоча є один еластичний пошук, який має хорошу базу користувачів.


13
той незручний момент, коли я прочитав цю відповідь через півтора року і натиснув на резюме і побачив, що я сам написав цю відповідь. Лол. : Невеликий додаток до цього, хоча: Через 18 місяців еластичний пошук виявився чудовою альтернативою і також має гідне співтовариство. Класно, бонсай класно!
Augiwan

Август! Той незручний момент: D. Отже, для веб-програми python, на вашу думку, зараз найкраще? Solr чи еластичний пошук на основі продуктивності, використання пам'яті та простоти налаштування будь-якої ідеї?
Мевін Бабу

Не має значення, на якій мові написано веб-додаток. Вибирайте, виходячи з вашої справи використання!
Augiwan

19

Я вже майже рік користуюся Сфінксом, і це було дивовижно. Я можу індексувати 1,5 мільйона документів приблизно за хвилину на своєму MacBook, а ще швидше - на сервері. Я також використовую Sphinx для обмеження пошуку місцями в певних широтах і довготах, і це дуже швидко. Крім того, як рейтингуються результати, дуже доречно. Легко встановити та налаштувати, якщо ви читаєте підручник чи два. Майже 1,0 статус, але їх кандидати в реліз були суцільними.


3
Географічний пошук можна здійснити в Solr за допомогою плагіна LocalSolr
Маурісіо Шеффер

1
ви можете INDEX 1,5 мільйона документів за хвилину? Я навіть не можу наблизитися до ЧИТАННЯ, що багато - безпосередньо із 7zip (не пишучи, не виводячи на консоль) файлів на моєму SSD! І це 2017 рік! Що це за документи? Це досить неймовірно. Примітка: Сподіваюся, ви не мали на увазі пошук індексу 1,5 мільйона за хвилину. Пошуки індексу з 1,5 млн. Документів все одно повернуться за лічені секунди (навіть у 2009 році).
FastAl

2

Здається, Lucene / Solr є більш популярним та тривалим роком у бізнесі та значно сильнішою спільнотою користувачів. Імхо, якщо ви зможете подолати початкові проблеми налаштування, як, здається, стикалися деякі (не ми), то я б сказав, що Lucene / Solr - це ваша найкраща ставка.


Спільнота користувачів - важливий момент. На форумах Сфінкса є кілька ДУЖЕ, ДУЖЕ корисних людей, але інакше немає сильної спільноти.
mlissner
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.