0

休止状態の検索クエリを固定値で制限する方法を考えています。たとえば、結果をコンピューターのみに制限する URL に値がある電気店に対してフリー テキスト検索を行っている場合です。または、別の例として、場所に基づいて検索を行うこともできます。

現在のコード

@Entity
@Indexed
public class Store {

   @Field(index=Index.YES, analyze=Analyze.YES, store=Store.NO)
   private String name;

   @IndexedEmbedded
   @OneToMany(mappedBy = "computer", cascade = CascadeType.ALL, orphanRemoval = true)
   private List<Computer> computers;
}

@Entity
public class Computer {

   @Field
   private String name;

   @ContainedIn
   @ManyToOne
   @JoinColumn(name = "store_id", nullable = false)
   private Store Store;
}

キーワード検索クエリ

FullTextSession fullTextSession = Search.getFullTextSession(sessionManager.getSession());
        QueryBuilder queryBuilder = fullTextSession.getSearchFactory().buildQueryBuilder().forEntity(Store.class).get();
        Query luceneQuery = queryBuilder.keyword().onFields("name").andField("computers.name").matching(keyword).createQuery();

        org.hibernate.search.FullTextQuery fullTextQuery = fullTextSession.createFullTextQuery(luceneQuery, Computer.class);

これを機能させるために私が欠けているものを誰かが知っていますか?

4

1 に答える 1

0

hibernate-search クエリを制限する適切な方法は、そのように .bool() を使用して行われると想定しています。

String store = "Orlando Electronics";

Query luceneQuery = queryBuilder.bool()
                .should(queryBuilder.keyword().onFields("name").matching(store).createQuery())
                .must(queryBuilder.keyword().onFields("computers.name").matching("Dell").createQuery())
                .createQuery();

私が正しい軌道に乗っているかどうかを誰かに知らせてもらえますか?

于 2013-10-11T19:58:26.633 に答える