четверг, 12 мая 2011 г.

Hibernate Search: Как ограничить область поиска?

Кратко:

  1. Комбинировать HQL (Criteria API) и Hibernate Search нельзя
  2. Возможно вам подойдет Sharding....
Полно:

Была у меня проблема - нужно было добавить fulltext поиск. Для решения данной проблемы я выбрал Hibernate Search и начал его изучать. Поиск нужно было производить не по всему приложению, а только по документам, доступным пользователю. Логичное решение - отобрать документы при помощи HQL запроса, а потом произвести по ним поиск при помощи Hibernate Search. И начал я читать документацию в поисках ответа на данный вопрос. Читал, читал... а ответа все нет и нет... Задал вопрос на форуме - оказалось, так сделать нельзя - можно либо искать в SQL базе, либо в индексе Lucene. На время я на эту тему забил...
И вот недавно меня постела идея - что если строить множество маленьких индексов и в момент поиска определять, в каком индексе производить поиск:

  1. Все документы пользователя UserA отнести к индексу index_usera, пользователя UserB - index_userb.
  2. Если пользователь UserA ищет - искать по индексу index_usera, если UserB...
На этот раз я сразу задал вопрос на форуме и в тот же день получил ответ:
  1. Для индексации используем Sharding
  2. Для поиска используем Shard Filter
Здесь вы найдете хороший (и более развернутый) пост по той же самой теме.

среда, 11 мая 2011 г.

Почему блоги - зло

В последнее время мне пришлось очень много читать и изучать различных Java технологий - Spring, Hibernate, Freemarker, GWT и т.д. В процессе обучения у меня возникло ощущение (хотя об этом все говорят и так), что интернет - помойка, а большинство блогов - откровенный мусор. На одну простую тему 10, 20, 100 одинаковых постов, поверхностно описывающих проблему. Хороших сообщений и блогов кот наплакал.

Все больше я склоняюсь к мысли, что лучше ничего не писать, чем писать то, что и так все знают... Поэтому я давно ничего не постил