2010-11-09 1 views
0

Все остальное остается неизменным, некоторые из моих объектов более ценны, чем другие.Усиление документов в Hibernate Search/Lucene

Можно ли увеличить объекты за время индекса, скажем, по цене в долларах США?

Или, если у вас есть ограниченное количество значений, я надеялся, что это будет работать:

f:aaa^4 f:bbb^3 f:ccc^2 animal:elephant 

, но я должен быть что-то отсутствует.

ответ

1

То, что вы говорите, будет работать. Однако вы, вероятно, захотите переформатировать его как (boost query) +(original query), например. (f:a^4 f:b^3 b:c^2) +animal:elephant. Теперь у вас есть вещи, которые имеют только f:aaa, независимо от animal:elephant.

Вы можете увидеть Lucene in Action для примера того, как написать собственный счетчик, который позволяет вам делать что-то более похожее на повышение в зависимости от цены. Я не знаю, как вы можете это сделать, не написав код.

0

Если вы используете hibernate-search, вы можете добавить повышение непосредственно к полям с помощью аннотации. Существует два типа повышения: динамическое повышение, которое применяется ко всему объекту, или повышение уровня поля. Вы, вероятно, хотите динамический импульс, и может быть определен с помощью: @DynamicBoost (реализ = VIPBoostStrategy.class)

См http://docs.jboss.org/hibernate/search/3.2/reference/en-US/html/search-mapping.html#section-boost-annotation