Является ли 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 могут быть интересными кандидатами.