У меня есть страница для поиска пользователей с определенными критериями (id, name, email, department, job) и прямо сейчас я использую критерии Hibernate для моего поиска, и он работает очень хорошо. Мне было интересно узнать о преимуществах спящий поиск с lucene queries, который заставит меня использовать его, вместо того, чтобы использовать мой текущий пользовательский поиск.Hibernate Search vs Custom Search
ответ
Для вашей ситуации я считаю, что API критериев достаточно. Поиск критериев Criteria API может выполнять хорошие, если повторяемость кэшируется, и если вы выполняете их по индексированным данным.
Это может быть достаточно, если у вас возникли вопросы типа:
Дайте мне все пользователи отдела «FooBar».
или
Дайте мне все пользователи отдела «FooBar» с работой «FooBarIst»
Однако, если вы работаете над большими наборами, не являющихся индексированных данных, вы можете заметить падение производительности. Например, если ваш атрибут «имя» не кэшируются, вы заметите, что запрос типа:
Дайте мне все пользователи с именем LIKE «Harr *» который должен дать вам или пользователям имя
Harrold
Harrison
Harring
Harrelson
будет выполнять очень плохо.
Моя точка зрения, этот запрос будет медленным, если вы не указали атрибут «name» в своем движке базы данных. Итак, если вы планируете использовать такие запросы, уже неплохо начать думать о полнотекстовом поисковом решении, в котором находится Hibernate Search/Lucene/Solr.
Они будут давать вам намного лучшую производительность при поиске электронной почты или некоторых других attrbiute, и вы пытаетесь сделать функцию автозаполнения, например.
Итак, моя рекомендация для вас такова: В зависимости от сценариев, выберите, следует ли использовать только API критериев или API API + спящий поиск/Lucene. Использование только API критериев отлично, если вы знаете, каковы его ограничения.
Здесь общий запрос для первого сценария (где критерии API достаточно и Hibernate Search + Lucene является немного излишним):
Все пользователи в FooBarDepartment
Здесь есть общий запрос для второго сценария (где Criteria API может это сделать, но Hibernate Search + Lucene будет лучшим выбором):
Все пользователи, у которых есть электронное письмо, rts с буквой «f» Что касается всех пользователей, у которых есть письмо, которое начинается с букв «fOo»?
Этого запрос может быть сделан, конечно, с простым Criteria API, но если у вас есть миллионы пользователей, при создании таких запросов, вы начнете замечать значительный прирост производительности в подходе Hibernate Search/Lucene как по сравнению с простым критерием Критерии.
Итак, в заключение, используете ли вы простые критерии или критерии + Hibernte Search + Lucene, зависит от требований, дизайна и данных.
Да, как предложила баба, вы получаете лучшую производительность, но, прежде всего, она обеспечивает огромный импульс функциональности и улучшает работу пользователей.
Порядок возвращенных совпадений будет (необязательно) релевантным и может обрабатывать пользовательские опечатки, автосубъекты и выполнять некоторую интеллектуальную обработку текста (например, сходство слов) искомых терминов.
Вы можете предоставить «google like» одно текстовые поля ввода, которые интеллектуально соответствуют различным полям или даже типам объектов; реализация такой функции с критериями или SQL - безумие сложности и не принесет вам хороших результатов.
Лучшая часть интеграции собственного пользовательского движка, основанного на Lucene, заключается в том, что вы можете настроить практически все для конкретных потребностей вашего приложения декларативно; например, вы определяете свои синонимы, специфичные для вашего домена, и как аббревиатуры понимаются вашим приложением.
В дополнение к сгенерированным индексам, он приходит на ветер, чтобы выполнять интеллектуальный анализ данных, поиск подобия документа и т. Д. Например, вы можете создавать облака тегов, не требуя, чтобы ваши пользователи фактически отмечали вещи вручную: у вас уже есть векторы частот для всех членов вашей базы данных.
В пример? столбец справа на этом же веб-сайте показывает «Связанные» вопросы. Я не знаю, использовали ли они Hibernate Search для этого, но это те функции, которые он помогает реализовать.
- 1. Hibernate-search with hibernate
- 2. jquery search custom
- 3. Google Custom Search Accessibility
- 4. Azure Search Custom Analyzer
- 5. Альтернатива Google Custom Search
- 6. custom google search autosuggestion
- 7. Настроить Google Custom Search
- 8. Google Custom Search Indexing
- 9. jqGrid Custom Search Template
- 10. VSAM Search VS COBOL search/loop
- 11. hibernate search case нечувствительный
- 12. Hibernate-search поведение?
- 13. Hibernate Search query?
- 14. Hibernate Search Tuple Queries
- 15. hibernate-search MassIndexer ОШИБКА
- 16. Hibernate Search Help
- 17. Hibernate Search StringBridge ClassCastException
- 18. hibernate search on heroku
- 19. Hibernate Search @IndexedEmbedded
- 20. Hibernate-Search причина NoClassDefFound
- 21. hibernate search + spring3 + jpa
- 22. Hibernate Search Ограничение результатов
- 23. Hibernate search failover arhitecture
- 24. Hibernate Search или Compass
- 25. Hibernate Search sorting
- 26. Hibernate Search with MultiTenancy
- 27. Hibernate Search NoSuchMethodError
- 28. Hibernate Search Автоматическая индексация
- 29. Поиск с Hibernate Search
- 30. Algolia vs Solr search