cache.put(1, wrapper1); //todo how do we index if the key is a byte array?
cache.put(2, wrapper2);
SearchManager sm = Search.getSearchManager(cache);
SearchFactoryImplementor searchFactory = (SearchFactoryImplementor) sm.getSearchFactory();
assertNotNull(searchFactory.getIndexManagerHolder().getIndexManager(ProtobufValueWrapper.class.getName()));
Query luceneQuery = sm.buildQueryBuilderForClass(ProtobufValueWrapper.class)
.get()
.keyword()
.onField("name")
.ignoreFieldBridge()
.ignoreAnalyzer()
.matching("Adrian")
.createQuery();
List<Object> list = sm.getQuery(luceneQuery).list();
assertEquals(1, list.size());
// an alternative approach ...
Query luceneQuery2 = searchFactory.buildQueryBuilder().forEntity(ProtobufValueWrapper.class).get()
.keyword()
.onField("name")
.ignoreFieldBridge()
.ignoreAnalyzer()
.matching("Adrian")
.createQuery();
List<EntityInfo> queryEntityInfos = searchFactory.createHSQuery().luceneQuery(luceneQuery2)
.targetedEntities(Collections.<Class<?>>singletonList(ProtobufValueWrapper.class))
.projection("surname")
.queryEntityInfos();
assertEquals(1, queryEntityInfos.size());