Examples of LuceneQueryParsingResult


Examples of org.hibernate.hql.lucene.LuceneQueryParsingResult

    assertThat( parsingResult.getTargetEntityName() ).isEqualTo( "org.hibernate.hql.lucene.test.model.IndexedEntity" );
  }

  @Test
  public void shouldBuildOneFieldSort() {
    LuceneQueryParsingResult parsingResult = parseQuery( "select e from IndexedEntity e where e.name = 'same' order by e.title" );
    Sort sort = parsingResult.getSort();
    assertThat( sort ).isNotNull();
    assertThat( sort.getSort().length ).isEqualTo( 1 );
    assertThat( sort.getSort()[0].getField() ).isEqualTo( "title" );
    assertThat( sort.getSort()[0].getReverse() ).isEqualTo( false );
    assertThat( sort.getSort()[0].getType() ).isEqualTo( SortField.Type.STRING );
View Full Code Here

Examples of org.hibernate.hql.lucene.LuceneQueryParsingResult

    assertThat( sort.getSort()[0].getType() ).isEqualTo( SortField.Type.STRING );
  }

  @Test
  public void shouldBuildTwoFieldsSort() {
    LuceneQueryParsingResult parsingResult = parseQuery( "select e from IndexedEntity e where e.name = 'same' order by e.title, e.position DESC" );
    Sort sort = parsingResult.getSort();
    assertThat( sort ).isNotNull();
    assertThat( sort.getSort().length ).isEqualTo( 2 );
    assertThat( sort.getSort()[0].getField() ).isEqualTo( "title" );
    assertThat( sort.getSort()[0].getReverse() ).isEqualTo( false );
    assertThat( sort.getSort()[0].getType() ).isEqualTo( SortField.Type.STRING );
View Full Code Here

Examples of org.hibernate.hql.lucene.LuceneQueryParsingResult

      .buildProcessingChainForDynamicEntities( new TestFieldBridgeProvider() );
  }

  @Test
  public void shouldDetermineTargetEntityType() {
    LuceneQueryParsingResult parsingResult = parseQuery( "select e from IndexedEntity e where e.name = 'same' and not e.id = 5" );
    assertThat( parsingResult.getTargetEntityName() ).isEqualTo( "IndexedEntity" );
    assertThat( parsingResult.getTargetEntity() ).isSameAs( GenericValueHolder.class );
  }
View Full Code Here

Examples of org.hibernate.hql.lucene.LuceneQueryParsingResult

    assertThat( parsingResult.getTargetEntity() ).isSameAs( GenericValueHolder.class );
  }

  @Test
  public void shouldBuildOneFieldSort() {
    LuceneQueryParsingResult parsingResult = parseQuery( "select e from IndexedEntity e where e.name = 'same' order by e.title" );
    Sort sort = parsingResult.getSort();
    assertThat( sort ).isNotNull();
    assertThat( sort.getSort().length ).isEqualTo( 1 );
    assertThat( sort.getSort()[0].getField() ).isEqualTo( "title" );
    assertThat( sort.getSort()[0].getReverse() ).isEqualTo( false );
    assertThat( sort.getSort()[0].getType() ).isEqualTo( SortField.Type.STRING );
View Full Code Here

Examples of org.hibernate.hql.lucene.LuceneQueryParsingResult

    assertThat( sort.getSort()[0].getType() ).isEqualTo( SortField.Type.STRING );
  }

  @Test
  public void shouldBuildTwoFieldsSort() {
    LuceneQueryParsingResult parsingResult = parseQuery( "select e from IndexedEntity e where e.name = 'same' order by e.title, e.position DESC" );
    Sort sort = parsingResult.getSort();
    assertThat( sort ).isNotNull();
    assertThat( sort.getSort().length ).isEqualTo( 2 );
    assertThat( sort.getSort()[0].getField() ).isEqualTo( "title" );
    assertThat( sort.getSort()[0].getReverse() ).isEqualTo( false );
    assertThat( sort.getSort()[0].getType() ).isEqualTo( SortField.Type.STRING );
View Full Code Here

Examples of org.hibernate.hql.lucene.LuceneQueryParsingResult

      }

      SearchFactoryIntegrator searchFactory = (SearchFactoryIntegrator) searchManager.getSearchFactory();
      LuceneProcessingChain processingChain = new LuceneProcessingChain.Builder(searchFactory, entityNamesResolver).buildProcessingChainForClassBasedEntities();
      QueryParser queryParser = new QueryParser();
      LuceneQueryParsingResult parsingResult = queryParser.parseQuery(jpqlString, processingChain);

      Sort sort = null;
      if (sortCriteria != null && !sortCriteria.isEmpty()) {
         SortField[] sortField = new SortField[sortCriteria.size()];
         int i = 0;
         for (SortCriteria sc : sortCriteria) {
            //TODO [anistor] sort type is not entirely correct
            PropertyMetadata propMetadata = getPropertyMetadata(parsingResult.getTargetEntity(), sc.getAttributePath());
            DocumentFieldMetadata fm = propMetadata.getFieldMetadata().iterator().next();
            int sortType = fm.isNumeric() ? SortField.INT : SortField.STRING;
            sortField[i++] = new SortField(sc.getAttributePath(), sortType, sc.getSortOrder() == SortOrder.DESC);
         }
         sort = new Sort(sortField);
View Full Code Here

Examples of org.hibernate.hql.lucene.LuceneQueryParsingResult

    super( entityNames, builder, namedParameters );
  }

  @Override
  public LuceneQueryParsingResult getResult() {
    return new LuceneQueryParsingResult( builder.build(), targetTypeName, targetType, projections );
  }
View Full Code Here

Examples of org.hibernate.hql.lucene.LuceneQueryParsingResult

    super( entityNames, builder, namedParameters );
  }

  @Override
  public LuceneQueryParsingResult getResult() {
    return new LuceneQueryParsingResult( builder.build(), targetType, projections );
  }
View Full Code Here

Examples of org.hibernate.hql.lucene.LuceneQueryParsingResult

         };

         LuceneProcessingChain processingChain = new LuceneProcessingChain.Builder(searchFactory, entityNamesResolver)
               .buildProcessingChainForClassBasedEntities();

         LuceneQueryParsingResult parsingResult = queryParser.parseQuery(request.getJpqlString(), processingChain);

         MessageMarshaller messageMarshaller = (MessageMarshaller) serCtx.getMarshaller(parsingResult.getTargetEntity());
         messageDescriptor = serCtx.getMessageDescriptor(messageMarshaller.getTypeName());
         targetEntity = parsingResult.getTargetEntity();
         projections = parsingResult.getProjections();
         luceneQuery = parsingResult.getQuery();
      } else {
         EntityNamesResolver entityNamesResolver = new EntityNamesResolver() {
            @Override
            public Class<?> getClassFromName(String entityName) {
               return serCtx.canMarshall(entityName) ? ProtobufValueWrapper.class : null;
            }
         };

         FieldBridgeProvider fieldBridgeProvider = new FieldBridgeProvider() {
            @Override
            public FieldBridge getFieldBridge(String type, String propertyPath) {
               Descriptors.Descriptor md = serCtx.getMessageDescriptor(type);
               Descriptors.FieldDescriptor fd = getFieldDescriptor(md, propertyPath);
               switch (fd.getType()) {
                  case DOUBLE:
                     return new NullEncodingDoubleNumericFieldBridge(NULL_TOKEN);
                  case FLOAT:
                     return new NullEncodingFloatNumericFieldBridge(NULL_TOKEN);
                  case INT64:
                  case UINT64:
                  case FIXED64:
                  case SFIXED64:
                  case SINT64:
                     return new NullEncodingLongNumericFieldBridge(NULL_TOKEN);
                  case INT32:
                  case FIXED32:
                  case UINT32:
                  case SFIXED32:
                  case SINT32:
                  case BOOL:
                  case ENUM:
                     return new NullEncodingIntegerNumericFieldBridge(NULL_TOKEN);
                  case STRING:
                  case BYTES:
                  case GROUP:
                  case MESSAGE:
                     return new NullEncodingTwoWayFieldBridge(BridgeFactory.STRING, NULL_TOKEN);
               }
               return null;
            }
         };

         LuceneProcessingChain processingChain = new LuceneProcessingChain.Builder(searchFactory, entityNamesResolver)
               .buildProcessingChainForDynamicEntities(fieldBridgeProvider);
         LuceneQueryParsingResult parsingResult = queryParser.parseQuery(request.getJpqlString(), processingChain);
         targetEntity = parsingResult.getTargetEntity();
         messageDescriptor = serCtx.getMessageDescriptor(parsingResult.getTargetEntityName());
         projections = parsingResult.getProjections();

         QueryBuilder qb = searchManager.getSearchFactory().buildQueryBuilder().forEntity(targetEntity).get();
         luceneQuery = qb.bool()
               .must(qb.keyword().onField(TYPE_FIELD_NAME).ignoreFieldBridge().ignoreAnalyzer().matching(messageDescriptor.getFullName()).createQuery())
               .must(parsingResult.getQuery())
               .createQuery();
      }

      CacheQuery cacheQuery = searchManager.getQuery(luceneQuery, targetEntity);
View Full Code Here

Examples of org.hibernate.hql.lucene.LuceneQueryParsingResult

   }

   private QueryResponse executeQuery(AdvancedCache<byte[], byte[]> cache, final SerializationContext serCtx, QueryRequest request) {
      SearchManager searchManager = Search.getSearchManager(cache);
      CacheQuery cacheQuery;
      LuceneQueryParsingResult parsingResult;

      QueryParser queryParser = new QueryParser();
      SearchFactoryIntegrator searchFactory = (SearchFactoryIntegrator) searchManager.getSearchFactory();
      if (cache.getCacheConfiguration().compatibility().enabled()) {
         final QueryInterceptor queryInterceptor = ComponentRegistryUtils.getQueryInterceptor(cache);
         EntityNamesResolver entityNamesResolver = new EntityNamesResolver() {
            @Override
            public Class<?> getClassFromName(String entityName) {
               MessageMarshaller messageMarshaller = (MessageMarshaller) serCtx.getMarshaller(entityName);
               Class clazz = messageMarshaller.getJavaClass();
               return queryInterceptor.isIndexed(clazz) ? clazz : null;
            }
         };

         LuceneProcessingChain processingChain = new LuceneProcessingChain.Builder(searchFactory, entityNamesResolver)
               .buildProcessingChainForClassBasedEntities();

         parsingResult = queryParser.parseQuery(request.getJpqlString(), processingChain);
         cacheQuery = searchManager.getQuery(parsingResult.getQuery(), parsingResult.getTargetEntity());
      } else {
         EntityNamesResolver entityNamesResolver = new EntityNamesResolver() {
            @Override
            public Class<?> getClassFromName(String entityName) {
               return serCtx.canMarshall(entityName) ? ProtobufValueWrapper.class : null;
            }
         };

         FieldBridgeProvider fieldBridgeProvider = new FieldBridgeProvider() {
            @Override
            public FieldBridge getFieldBridge(String type, String propertyPath) {
               Descriptor md = serCtx.getMessageDescriptor(type);
               FieldDescriptor fd = getFieldDescriptor(md, propertyPath);
               switch (fd.getType()) {
                  case DOUBLE:
                     return NumericFieldBridge.DOUBLE_FIELD_BRIDGE;
                  case FLOAT:
                     return NumericFieldBridge.FLOAT_FIELD_BRIDGE;
                  case INT64:
                  case UINT64:
                  case FIXED64:
                  case SFIXED64:
                  case SINT64:
                     return NumericFieldBridge.LONG_FIELD_BRIDGE;
                  case INT32:
                  case FIXED32:
                  case UINT32:
                  case SFIXED32:
                  case SINT32:
                  case BOOL:
                  case ENUM:
                     return NumericFieldBridge.INT_FIELD_BRIDGE;
                  case STRING:
                  case BYTES:
                  case GROUP:
                  case MESSAGE:
                     return new NullEncodingTwoWayFieldBridge(new TwoWayString2FieldBridgeAdaptor(StringBridge.INSTANCE), NULL_TOKEN);
               }
               return null;
            }
         };

         LuceneProcessingChain processingChain = new LuceneProcessingChain.Builder(searchFactory, entityNamesResolver)
               .buildProcessingChainForDynamicEntities(fieldBridgeProvider);
         parsingResult = queryParser.parseQuery(request.getJpqlString(), processingChain);

         QueryBuilder qb = searchManager.getSearchFactory().buildQueryBuilder().forEntity(parsingResult.getTargetEntity()).get();
         Query luceneQuery = qb.bool()
               .must(qb.keyword().onField(TYPE_FIELD_NAME).ignoreFieldBridge().ignoreAnalyzer().matching(parsingResult.getTargetEntityName()).createQuery())
               .must(parsingResult.getQuery())
               .createQuery();

         cacheQuery = searchManager.getQuery(luceneQuery, parsingResult.getTargetEntity());
      }

      if (parsingResult.getSort() != null) {
         cacheQuery = cacheQuery.sort(parsingResult.getSort());
      }

      int projSize = 0;
      if (parsingResult.getProjections() != null && !parsingResult.getProjections().isEmpty()) {
         projSize = parsingResult.getProjections().size();
         cacheQuery = cacheQuery.projection(parsingResult.getProjections().toArray(new String[projSize]));
      }
      if (request.getStartOffset() > 0) {
         cacheQuery = cacheQuery.firstResult((int) request.getStartOffset());
      }
      if (request.getMaxResults() > 0) {
View Full Code Here
TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.