価格が 100 ~ 200 の Item クラスのすべてのインスタンスを検索するためのクエリを設計するのに苦労しています。
これが私の Item クラスです:
@Entity
public class Item {
@Id @DocumentId
Long id
@Field(index = Index.UN_TOKENIZED, store = Store.YES)
@NumericField
@FieldBridge(impl = BigDecimalNumericFieldBridge.class)
BigDecimal price = BigDecimal.ZERO
}
ここで説明されているクラスは BigDecimalNumericFieldBridge です: https://hibernate.onjira.com/secure/attachment/15952/proposed_doc.txt
Luke は、価格が 100 から 200 の間のドキュメントがいくつかあることを教えてくれました。
これが私のクエリです:
FullTextSession fullTextSession = Search.getFullTextSession(session);
final QueryBuilder queryBuilder = fullTextSession.getSearchFactory().buildQueryBuilder().forEntity(Item).get();
Query rootQuery = queryBuilder.bool()
.must(queryBuilder.range().onField('price').above(100).createQuery())
.must(queryBuilder.range().onField('price').below(200).createQuery())
.createQuery();
FullTextQuery ftq = fullTextSession.createFullTextQuery(rootQuery, Item);
List<Item> instanceList = ftq.list();
しかし、境界に関係なく、リストは常に空です。私が間違っていることについて何か考えはありますか?
ちなみに、Hibernate 3.6.10 で Hibernate Search 3.4.1 を使用しています。