我在Infinispan中使用Hibernate DSL进行搜索。
使用关键字查询时出现问题。
首先,这是映射类:
mapping
.analyzerDef("fr",StandardTokenizerFactory.class)
.filter(LowerCaseFilterFactory.class)
.entity(DatatypeProperty.class).indexed().providedId()
.property("rdfResource",ElementType.FIELD).field().analyze(Analyze.NO).store(Store.YES)
.property("typeId",ElementType.FIELD).field().analyze(Analyze.NO)
.property("xmlLang",ElementType.FIELD).field().analyze(Analyze.NO)
.property("normVal", ElementType.FIELD).field().analyzer("fr");
我在缓存中添加了数据:
dpId====>> DP_1464688 rdfResource====>> HPO_TE_HP:0002099 NormVal====>> asthme xmlLang====>> fr
dpId====>> DP_2009562 rdfResource====>> MDR_PT_10003553 NormVal====>> asthme xmlLang====>> fr
dpId====>> DP_914319 rdfResource====>> MED_T_T2 NormVal====>> asthme xmlLang====>> fr
dpId====>> DP_8271402 rdfResource====>> MSH_M_0001885 NormVal====>> asthme xmlLang====>> fr
dpId====>> DP_4432234 rdfResource====>> MSH_D_001249 NormVal====>> asthme xmlLang====>> fr
搜索查询:
Query query1 = queryBuilder
.bool()
.must(queryBuilder.keyword().onField("normVal").matching("asthme").createQuery())
.must(queryBuilder.keyword().onField("xmlLang").matching("fr").createQuery())
.createQuery();
test = CSECore.searchManager.getQuery(query1, DatatypeProperty.class).list();
但搜索结果中没有人存在。
PS: MSH_D_001249 的属性 em> ,其内容为 “asthme bronchique” ; 如果我在缓存中添加此内容, MSH_D_001249 将显示在结果中。
有人有这个想法???