Bagaimana cara menambahkan kueri wildcard di Hibernate Search 3.1.1GA

bagaimana menambahkan kueri wildcard saat menggunakan pencarian hibernasi. Saya menggunakan jar Hibernate Search 3.1.1GA dan tidak dapat mengupgrade jar saya ke versi yang lebih tinggi. Di versi hibernasi yang lebih tinggi kita dapat menggunakan metode wildcard menggunakan Query Builder.

Saya terjebak, tolong bantu saya.


person Sumant    schedule 26.11.2014    source sumber


Jawaban (1)


Saya berasumsi Anda mengacu pada permintaan Hibernate Search DSL. Sesuatu seperti ini:

Query luceneQuery = queryBuilder
    .keyword()
      .wildcard()
    .onField("foo")
    .matching("bar*")
    .createQuery();

DSL ini memang bukan bagian Pencarian 3.1.1 dan ditambahkan kemudian. Dalam versi ini Anda perlu membuat kueri Anda dengan menggunakan kueri Lucene asli. Sebenarnya semua yang dilakukan Pencarian DSL adalah membangun kueri asli ini untuk Anda. Dalam kasus Anda, Anda ingin melihat org.apache.lucene.search.WildcardQuery atau Anda dapat menggunakan org.apache.lucene.queryParser.QueryParser untuk menggunakan sintaks kueri Lucene yang juga mengizinkan wildcard.

person Hardy    schedule 26.11.2014
comment
Terimakasih atas bantuannya. QueryBuilder tidak tersedia untuk versi saya. Silakan bagikan lebih banyak kode. - person Sumant; 27.11.2014
comment
Itulah yang saya katakan, Anda tidak memerlukan QueryBuilder. Anda membuat kueri Lucene asli. Periksa dokumen Pencarian Hibernasi dan juga dokumen Lucene. Ada banyak sekali contoh. - person Hardy; 27.11.2014
comment
Hardy: Saya melakukan apa yang Anda sarankan tetapi mendapat pengecualian. Disebabkan oleh: java.lang.NoSuchMethodError: org.hibernate.search.SearchFactory.buildQueryBuilder()Lorg/hibernate/search/query/dsl/QueryContextBuilder; di org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:310) di org.springframework.aop.framework.ReflectiveMethodInvocation.invokeJoinpoint(ReflectiveMethodInvocation.java:182) - person Sumant; 27.11.2014
comment
Kriteria kriteria = session.createCriteria(NSAliasImpl.class).add(Restrictions.eq(itemId, itemId)); FullTextSession fullTextSession = Pencarian.getFullTextSession(sesi); Transaksi tx = fullTextSession.beginTransaction(); QueryBuilder queryBuilder = fullTextSession.getSearchFactory().buildQueryBuilder().forEntity(NSAliasImpl.class).get(); - person Sumant; 27.11.2014
comment
org.apache.lucene.search.Query query = queryBuilder.keyword().wildcard().onField(trackerId).ignoreAnalyzer().matching(+ searchParam +).createQuery(); - person Sumant; 27.11.2014
comment
Apakah itu mungkin dengan array string di onFields();? Silakan lihat pertanyaan saya @Hardy: stackoverflow.com/questions/28528012/ - person alexander; 16.02.2015