Является ли Hibernate Search чистой абстракцией для Lucene?

Я использовал Hibernate в прошлом, и я разделяю разочарование многих людей от использования ORM. Поскольку традиционные базы данных являются реляционными, любая ORM имеет утечку абстракции. Большая часть моего времени расходуется на то, чтобы понять детали абстракции, чтобы я смог добиться хорошей производительности.

Hibernate Search, однако, работает поверх Lucene. Поскольку Lucene содержит коллекцию документов одного типа, у него могут не быть те же проблемы, что и у Hibernate с реляционной базой данных. Обеспечивает ли Hibernate Search чистую абстракцию или Hibernate Search таит в себе те же проблемы, что и Hibernate+MySQL?

Я рассматриваю возможность перехода от существующей реализации в сыром Lucene к Hibernate Search.

1 ответ

Решение

Хорошая абстракция - это абстракция, которая решает проблему, которая не решается базовой библиотекой без какого-либо компромисса с набором функций. В случае Lucene эти проблемы могут быть:

  • распределение индекса,
  • синхронизация с другим постоянным источником данных,
  • ...

Тогда лучшая абстракция зависит от этой проблемы, которую нужно решить:

  • Если вы просто хотите иметь возможность создавать обратный индекс на одном сервере и запрашивать его, тогда придерживайтесь простого Lucene. Lucene уже лучшая доступная абстракция. Любая другая абстракция привела бы к дополнительным издержкам, в то же время, вероятно, не позволяя вам использовать некоторые функции, и не стала бы намного проще.

  • Если вы хотите распространяться, то Solr или Elastic Search вам очень помогут.

  • Если вы хотите интегрировать полнотекстовые функции с другим постоянным набором данных, то Hibernate Search или Compass могут быть интересными кандидатами.

Другие вопросы по тегам