类org.apache.lucene.search.join.ScoreMode源码实例Demo

下面列出了怎么用org.apache.lucene.search.join.ScoreMode的API类实例代码及写法,或者点击链接到github查看源代码。

源代码1 项目: molgenis   文件: QueryClauseSearchGeneratorTest.java
@Test
void mapQueryRuleAttributeSearchReferencedAttribute() {
  QueryRule queryRule = mock(QueryRule.class);
  when(queryRule.getField()).thenReturn("attr");
  when(queryRule.getValue()).thenReturn("val");

  Attribute refIdAttribute = mock(Attribute.class);
  when(refIdAttribute.getDataType()).thenReturn(STRING);
  EntityType refEntityType = mock(EntityType.class);
  when(refEntityType.getIdAttribute()).thenReturn(refIdAttribute);
  when(documentIdGenerator.generateId(refIdAttribute)).thenReturn("refAttr");
  Attribute attribute = mock(Attribute.class);
  when(attribute.hasRefEntity()).thenReturn(true);
  when(attribute.getRefEntity()).thenReturn(refEntityType);
  when(documentIdGenerator.generateId(attribute)).thenReturn("attr");

  EntityType entityType = mock(EntityType.class);
  when(entityType.getIndexingDepth()).thenReturn(1);
  when(entityType.getAttributeByName("attr")).thenReturn(attribute);

  QueryBuilder queryBuilder = queryClauseSearchGenerator.mapQueryRule(queryRule, entityType);
  QueryBuilder expectedQueryBuilder =
      QueryBuilders.nestedQuery(
          "attr", QueryBuilders.matchQuery("attr.refAttr", "val"), ScoreMode.Avg);
  assertQueryBuilderEquals(expectedQueryBuilder, queryBuilder);
}
 
@Test
void mapQueryRuleAttributeSearchReferencedAttribute() {
  when(queryRule.getField()).thenReturn("attr");
  when(queryRule.getValue()).thenReturn("val");

  when(entityType.getIndexingDepth()).thenReturn(1);
  when(entityType.getAttributeByName("attr")).thenReturn(attribute);
  when(attribute.hasRefEntity()).thenReturn(true);
  when(attribute.getRefEntity()).thenReturn(refEntityType);
  when(refIdAttribute.getDataType()).thenReturn(STRING);
  when(refEntityType.getIdAttribute()).thenReturn(refIdAttribute);
  when(documentIdGenerator.generateId(refIdAttribute)).thenReturn("refAttr");
  when(documentIdGenerator.generateId(attribute)).thenReturn("attr");

  QueryBuilder queryBuilder = searchQueryGenerator.mapQueryRule(queryRule, entityType);
  QueryBuilder expectedQueryBuilder =
      QueryBuilders.nestedQuery(
          "attr",
          simpleQueryStringQuery("val").field("attr.refAttr").defaultOperator(AND),
          ScoreMode.Avg);
  assertQueryBuilderEquals(expectedQueryBuilder, queryBuilder);
}
 
源代码3 项目: spring-boot-tutorial   文件: BookRepositoryTest.java
@Test
public void shouldReturnBooksForGivenBucket() {
    Book book1 = new Book(RandomUtil.randomString(5, 10), "test1", System.currentTimeMillis());
    Book book2 = new Book(RandomUtil.randomString(5, 10), "test2", System.currentTimeMillis());

    Map<Integer, Collection<String>> map1 = new HashMap<>();
    map1.put(1, Arrays.asList("test1", "test2"));

    Map<Integer, Collection<String>> map2 = new HashMap<>();
    map2.put(1, Arrays.asList("test3", "test4"));

    book1.setBuckets(map1);
    book2.setBuckets(map2);

    repository.saveAll(Arrays.asList(book1, book2));

    SearchQuery searchQuery = new NativeSearchQueryBuilder()
        .withQuery(nestedQuery("buckets", termQuery("buckets.1", "test3"), ScoreMode.Total))
        .build();

    Page<Book> books = repository.search(searchQuery);
    Assertions.assertThat(books.getContent()).hasSize(1);
}
 
源代码4 项目: spring-boot-tutorial   文件: NestedObjectTests.java
@Test
public void shouldSearchUsingNestedQueryOnMultipleLevelNestedObject() {
    //given
    List<IndexQuery> indexQueries = createPerson();

    //when
    elasticsearchTemplate.putMapping(PersonMultipleLevelNested.class);
    elasticsearchTemplate.bulkIndex(indexQueries);
    elasticsearchTemplate.refresh(PersonMultipleLevelNested.class);

    //then
    BoolQueryBuilder builder = boolQuery();
    builder.must(nestedQuery("girlFriends", termQuery("girlFriends.type", "temp"), ScoreMode.Total))
        .must(nestedQuery("girlFriends.cars", termQuery("girlFriends.cars.name", "Ford".toLowerCase()),
            ScoreMode.Total));

    SearchQuery searchQuery = new NativeSearchQueryBuilder()
        .withQuery(builder)
        .build();

    Page<PersonMultipleLevelNested> personIndexed =
        elasticsearchTemplate.queryForPage(searchQuery, PersonMultipleLevelNested.class);
    assertThat(personIndexed, is(notNullValue()));
    assertThat(personIndexed.getTotalElements(), is(1L));
    assertThat(personIndexed.getContent().get(0).getId(), is("1"));
}
 
源代码5 项目: spring-boot-tutorial   文件: BookRepositoryTest.java
@Test
public void shouldReturnBooksForGivenBucket() {
    Book book1 = new Book(RandomUtil.randomString(5, 10), "test1", System.currentTimeMillis());
    Book book2 = new Book(RandomUtil.randomString(5, 10), "test2", System.currentTimeMillis());

    Map<Integer, Collection<String>> map1 = new HashMap<>();
    map1.put(1, Arrays.asList("test1", "test2"));

    Map<Integer, Collection<String>> map2 = new HashMap<>();
    map2.put(1, Arrays.asList("test3", "test4"));

    book1.setBuckets(map1);
    book2.setBuckets(map2);

    repository.saveAll(Arrays.asList(book1, book2));

    SearchQuery searchQuery = new NativeSearchQueryBuilder()
        .withQuery(nestedQuery("buckets", termQuery("buckets.1", "test3"), ScoreMode.Total))
        .build();

    Page<Book> books = repository.search(searchQuery);
    Assertions.assertThat(books.getContent()).hasSize(1);
}
 
源代码6 项目: spring-boot-tutorial   文件: NestedObjectTests.java
@Test
public void shouldSearchUsingNestedQueryOnMultipleLevelNestedObject() {
    //given
    List<IndexQuery> indexQueries = createPerson();

    //when
    elasticsearchTemplate.putMapping(PersonMultipleLevelNested.class);
    elasticsearchTemplate.bulkIndex(indexQueries);
    elasticsearchTemplate.refresh(PersonMultipleLevelNested.class);

    //then
    BoolQueryBuilder builder = boolQuery();
    builder.must(nestedQuery("girlFriends", termQuery("girlFriends.type", "temp"), ScoreMode.Total))
        .must(nestedQuery("girlFriends.cars", termQuery("girlFriends.cars.name", "Ford".toLowerCase()),
            ScoreMode.Total));

    SearchQuery searchQuery = new NativeSearchQueryBuilder()
        .withQuery(builder)
        .build();

    Page<PersonMultipleLevelNested> personIndexed =
        elasticsearchTemplate.queryForPage(searchQuery, PersonMultipleLevelNested.class);
    assertThat(personIndexed, is(notNullValue()));
    assertThat(personIndexed.getTotalElements(), is(1L));
    assertThat(personIndexed.getContent().get(0).getId(), is("1"));
}
 
源代码7 项目: syncer   文件: ESRequestMapper.java
private QueryBuilder getFilter(SyncData data) {
  BoolQueryBuilder builder = boolQuery();
  HashMap<String, Object> syncBy = data.getSyncBy();
  if (syncBy.isEmpty()) {
    throw new InvalidConfigException("No data used to do sync(update/delete) filter");
  }
  for (Entry<String, Object> entry : syncBy.entrySet()) {
    String[] key = entry.getKey().split("\\.");
    if (key.length == 2) {
      builder.filter(nestedQuery(key[0], boolQuery().filter(getSingleFilter(entry)), ScoreMode.Avg));
    } else if (key.length == 1) {
      builder.filter(getSingleFilter(entry));
    } else {
      logger.error("Only support one level nested obj for the time being");
    }
  }
  return builder;
}
 
源代码8 项目: molgenis   文件: QueryGeneratorReferencesIT.java
@Test
void generateOneQueryRuleNotEqualsCompoundPartString() {
  String value = "value";
  Query<Entity> q = new QueryImpl<>().not().eq(PREFIX + refCompoundPart0AttributeName, value);
  QueryBuilder query = queryGenerator.createQueryBuilder(q, entityType);
  QueryBuilder expectedQuery =
      boolQuery()
          .mustNot(
              constantScoreQuery(
                  nestedQuery(
                      REF_ENTITY_ATT,
                      termQuery(
                          PREFIX + refCompoundPart0AttributeName + '.' + FIELD_NOT_ANALYZED,
                          value),
                      ScoreMode.Avg)));
  assertQueryBuilderEquals(expectedQuery, query);
}
 
public void prepareModels() throws Exception {
    List<StoredFeature> features = new ArrayList<>(3);
    features.add(new StoredFeature("text_feature1", Collections.singletonList("query"), "mustache",
            QueryBuilders.matchQuery("field1", "{{query}}").toString()));
    features.add(new StoredFeature("text_feature2", Collections.singletonList("query"), "mustache",
            QueryBuilders.matchQuery("field2", "{{query}}").toString()));
    features.add(new StoredFeature("numeric_feature1", Collections.singletonList("query"), "mustache",
            new FunctionScoreQueryBuilder(QueryBuilders.matchAllQuery(), new FieldValueFactorFunctionBuilder("scorefield1")
                    .factor(FACTOR)
                    .modifier(FieldValueFactorFunction.Modifier.LN2P)
                    .missing(0F)).scoreMode(FunctionScoreQuery.ScoreMode.MULTIPLY).toString()));
    features.add(new StoredFeature("derived_feature", Collections.singletonList("query"), "derived_expression",
            "100"));

    StoredFeatureSet set = new StoredFeatureSet("my_set", features);
    addElement(set);
    StoredLtrModel model = new StoredLtrModel("my_model", set,
            new StoredLtrModel.LtrModelDefinition("model/linear",
                    LinearRankerParserTests.generateRandomModelString(set), true));
    addElement(model);
}
 
源代码10 项目: elasticsearch-learning-to-rank   文件: LoggingIT.java
public void prepareModelsExtraLogging() throws Exception {
    List<StoredFeature> features = new ArrayList<>(3);
    features.add(new StoredFeature("text_feature1", Collections.singletonList("query"), "mustache",
            QueryBuilders.matchQuery("field1", "{{query}}").toString()));
    features.add(new StoredFeature("text_feature2", Collections.singletonList("query"), "mustache",
            QueryBuilders.matchQuery("field2", "{{query}}").toString()));
    features.add(new StoredFeature("numeric_feature1", Collections.singletonList("query"), "mustache",
            new FunctionScoreQueryBuilder(QueryBuilders.matchAllQuery(), new FieldValueFactorFunctionBuilder("scorefield1")
                    .factor(FACTOR)
                    .modifier(FieldValueFactorFunction.Modifier.LN2P)
                    .missing(0F)).scoreMode(FunctionScoreQuery.ScoreMode.MULTIPLY).toString()));
    features.add(new StoredFeature("derived_feature", Collections.singletonList("query"), "derived_expression",
            "100"));
    features.add(new StoredFeature("extra_logging_feature", Arrays.asList("query"), ScriptFeature.TEMPLATE_LANGUAGE,
            "{\"lang\": \"native\", \"source\": \"feature_extractor_extra_logging\", \"params\": {}}"));

    StoredFeatureSet set = new StoredFeatureSet("my_set", features);
    addElement(set);
    StoredLtrModel model = new StoredLtrModel("my_model", set,
            new StoredLtrModel.LtrModelDefinition("model/linear",
                    LinearRankerParserTests.generateRandomModelString(set), true));
    addElement(model);
}
 
源代码11 项目: datashare   文件: ElasticsearchIndexer.java
@Override
public Searcher with(String query, int fuzziness, boolean phraseMatches) {
    String queryString = query;
    try {
        if (!hasLuceneOperators(query)) {
            if (phraseMatches) {
                queryString = "\"" + query + "\"" + (fuzziness == 0 ? "": "~" + fuzziness);
            } else if (fuzziness > 0) {
                queryString = Stream.of(query.split(" ")).map(s -> s + "~" + fuzziness).collect(Collectors.joining(" "));
            }
        } else if (fuzziness != 0 || phraseMatches) {
            LOGGER.info("detected lucene operators in \"{}\", fuzziness and phrase match won't be applied", query);
        }
    } catch (org.apache.lucene.queryparser.classic.ParseException e) {
        LOGGER.warn("cannot parse query. Sending query as string query", e);
    }
    this.boolQuery.must(new MatchAllQueryBuilder());
    this.boolQuery.must(new QueryStringQueryBuilder(queryString).defaultField("*"));
    this.boolQuery.should(new HasChildQueryBuilder("NamedEntity", new QueryStringQueryBuilder(queryString).defaultField("mentionNorm"), ScoreMode.None));
    return this;
}
 
源代码12 项目: metron   文件: ElasticsearchMetaAlertSearchDao.java
@Override
public SearchResponse search(SearchRequest searchRequest) throws InvalidSearchException {
  // Wrap the query to also get any meta-alerts.
  QueryBuilder qb = constantScoreQuery(boolQuery()
      .must(boolQuery()
          .should(new QueryStringQueryBuilder(searchRequest.getQuery()))
          .should(nestedQuery(
              MetaAlertConstants.ALERT_FIELD,
              new QueryStringQueryBuilder(searchRequest.getQuery()),
              ScoreMode.None
              )
          )
      )
      // Ensures that it's a meta alert with active status or that it's an alert (signified by
      // having no status field)
      .must(boolQuery()
          .should(termQuery(MetaAlertConstants.STATUS_FIELD,
              MetaAlertStatus.ACTIVE.getStatusString()))
          .should(boolQuery().mustNot(existsQuery(MetaAlertConstants.STATUS_FIELD)))
      )
      .mustNot(existsQuery(MetaAlertConstants.METAALERT_FIELD))
  );
  return elasticsearchDao.search(searchRequest, qb);
}
 
源代码13 项目: metron   文件: ElasticsearchMetaAlertSearchDao.java
@Override
public SearchResponse getAllMetaAlertsForAlert(String guid) throws InvalidSearchException, IOException {
  if (guid == null || guid.trim().isEmpty()) {
    throw new InvalidSearchException("Guid cannot be empty");
  }
  // Searches for all alerts containing the meta alert guid in it's "metalerts" array
  QueryBuilder qb = boolQuery()
      .must(
          nestedQuery(
              MetaAlertConstants.ALERT_FIELD,
              boolQuery()
                  .must(termQuery(MetaAlertConstants.ALERT_FIELD + "." + GUID, guid)),
              ScoreMode.None
          ).innerHit(new InnerHitBuilder())
      )
      .must(termQuery(MetaAlertConstants.STATUS_FIELD, MetaAlertStatus.ACTIVE.getStatusString()));
  return queryAllResults(elasticsearchDao.getClient().getHighLevelClient(), qb, config.getMetaAlertIndex(),
      pageSize);
}
 
源代码14 项目: james-project   文件: CriterionConverter.java
private void registerHeaderOperatorConverters() {

        registerHeaderOperatorConverter(
            SearchQuery.ExistsOperator.class,
            (headerName, operator) ->
                nestedQuery(JsonMessageConstants.HEADERS,
                    termQuery(JsonMessageConstants.HEADERS + "." + JsonMessageConstants.HEADER.NAME, headerName),
                    ScoreMode.Avg));
        
        registerHeaderOperatorConverter(
            SearchQuery.AddressOperator.class,
            (headerName, operator) -> manageAddressFields(headerName, operator.getAddress()));
        
        registerHeaderOperatorConverter(
            SearchQuery.DateOperator.class,
            (headerName, operator) -> dateRangeFilter(JsonMessageConstants.SENT_DATE, operator));
        
        registerHeaderOperatorConverter(
            SearchQuery.ContainsOperator.class,
            (headerName, operator) ->
                nestedQuery(JsonMessageConstants.HEADERS,
                    boolQuery()
                        .must(termQuery(JsonMessageConstants.HEADERS + "." + JsonMessageConstants.HEADER.NAME, headerName))
                        .must(matchQuery(JsonMessageConstants.HEADERS + "." + JsonMessageConstants.HEADER.VALUE, operator.getValue())),
                    ScoreMode.Avg));
    }
 
源代码15 项目: molgenis   文件: QueryGeneratorIT.java
@Test
void generateOneQueryRuleInCategorical_Entities() {
  Entity ref0 = new DynamicEntity(refEntityType);
  ref0.set(idAttrName, "id0");
  Entity ref1 = new DynamicEntity(refEntityType);
  ref1.set(idAttrName, "id1");
  Entity ref2 = new DynamicEntity(refEntityType);
  ref2.set(idAttrName, "id2");

  Iterable<Object> values = Arrays.asList(ref0, ref1, ref2);
  Query<Entity> q = new QueryImpl<>().in(categoricalAttrName, values);
  QueryBuilder query = queryGenerator.createQueryBuilder(q, entityType);
  QueryBuilder expectedQuery =
      constantScoreQuery(
          nestedQuery(
              categoricalAttrName,
              termsQuery(
                  categoricalAttrName + '.' + idAttrName + '.' + FIELD_NOT_ANALYZED,
                  new Object[] {"id0", "id1", "id2"}),
              ScoreMode.Avg));
  assertQueryBuilderEquals(expectedQuery, query);
}
 
源代码16 项目: molgenis   文件: QueryGeneratorIT.java
@Test
void generateOneQueryRuleInMref_Entities() {
  Entity ref0 = new DynamicEntity(refEntityType);
  ref0.set(idAttrName, "id0");
  Entity ref1 = new DynamicEntity(refEntityType);
  ref1.set(idAttrName, "id1");
  Entity ref2 = new DynamicEntity(refEntityType);
  ref2.set(idAttrName, "id2");

  Iterable<Object> values = Arrays.asList(ref0, ref1, ref2);
  Query<Entity> q = new QueryImpl<>().in(mrefAttrName, values);
  QueryBuilder query = queryGenerator.createQueryBuilder(q, entityType);
  QueryBuilder expectedQuery =
      constantScoreQuery(
          nestedQuery(
              mrefAttrName,
              termsQuery(
                  mrefAttrName + '.' + idAttrName + '.' + FIELD_NOT_ANALYZED,
                  new Object[] {"id0", "id1", "id2"}),
              ScoreMode.Avg));
  assertQueryBuilderEquals(expectedQuery, query);
}
 
源代码17 项目: molgenis   文件: QueryGeneratorIT.java
@Test
void generateOneQueryRuleInXref_Entities() {
  Entity ref0 = new DynamicEntity(refEntityType);
  ref0.set(idAttrName, "id0");
  Entity ref1 = new DynamicEntity(refEntityType);
  ref1.set(idAttrName, "id1");
  Entity ref2 = new DynamicEntity(refEntityType);
  ref2.set(idAttrName, "id2");

  Iterable<Object> values = Arrays.asList(ref0, ref1, ref2);
  Query<Entity> q = new QueryImpl<>().in(xrefAttrName, values);
  QueryBuilder query = queryGenerator.createQueryBuilder(q, entityType);
  QueryBuilder expectedQuery =
      constantScoreQuery(
          nestedQuery(
              xrefAttrName,
              termsQuery(
                  xrefAttrName + '.' + idAttrName + '.' + FIELD_NOT_ANALYZED,
                  new Object[] {"id0", "id1", "id2"}),
              ScoreMode.Avg));
  assertQueryBuilderEquals(expectedQuery, query);
}
 
源代码18 项目: molgenis   文件: QueryGeneratorIT.java
@Test
void generateOneQueryRuleNotEqualsCategoricalNull() {
  String value = null;
  Query<Entity> q = new QueryImpl<>().not().eq(categoricalAttrName, value);
  QueryBuilder query = queryGenerator.createQueryBuilder(q, entityType);
  QueryBuilder expectedQuery =
      boolQuery()
          .mustNot(
              constantScoreQuery(
                  boolQuery()
                      .mustNot(
                          nestedQuery(
                              categoricalAttrName,
                              existsQuery(categoricalAttrName + ".xid"),
                              ScoreMode.Avg))));
  assertQueryBuilderEquals(expectedQuery, query);
}
 
源代码19 项目: molgenis   文件: BaseQueryClauseGeneratorTest.java
@Test
void testNestedQueryBuilderSizeTwo() {
  EntityType entityType = when(mock(EntityType.class).getIndexingDepth()).thenReturn(1).getMock();
  String parentFieldName = "parent";
  String childFieldName = "child";
  String queryValue = "value";
  QueryBuilder queryBuilder = termQuery(parentFieldName + '.' + childFieldName, queryValue);

  Attribute parentAttribute = mock(Attribute.class);
  when(documentIdGenerator.generateId(parentAttribute)).thenReturn(parentFieldName);
  Attribute childAttribute = mock(Attribute.class);
  when(documentIdGenerator.generateId(childAttribute)).thenReturn(childFieldName);
  QueryBuilder nestedQueryBuilder =
      queryGenerator.nestedQueryBuilder(
          entityType, asList(parentAttribute, childAttribute), queryBuilder);

  QueryBuilder expectedQueryBuilder =
      QueryBuilders.nestedQuery(
          parentFieldName,
          termQuery(parentFieldName + '.' + childFieldName, queryValue),
          ScoreMode.Avg);
  assertQueryBuilderEquals(nestedQueryBuilder, expectedQueryBuilder);
}
 
源代码20 项目: elasticsearch-sql   文件: HasChildQueryParser.java
@Override
public AtomicQuery parse(ElasticsearchParser.HasChildClauseContext expression) {
    String type = expression.type.getText();
    BoolExpressionParser  boolExpressionParser=new BoolExpressionParser();
    QueryBuilder queryBuilder = boolExpressionParser.parseBoolQueryExpr(expression.query);
    QueryBuilder hasChildQueryBuilder=JoinQueryBuilders.hasChildQuery(type,queryBuilder, ScoreMode.Avg);
    AtomicQuery atomicQuery= new AtomicQuery(hasChildQueryBuilder);
    atomicQuery.getHighlighter().addAll(boolExpressionParser.highlighter);
    return atomicQuery;
}
 
源代码21 项目: molgenis   文件: QueryGeneratorReferencesIT.java
@Test
void generateOneQueryRuleLikeCompoundPartString() {
  String value = "value";
  Query<Entity> q = new QueryImpl<>().like(PREFIX + refCompoundPart0AttributeName, value);
  QueryBuilder query = queryGenerator.createQueryBuilder(q, entityType);
  QueryBuilder expectedQuery =
      QueryBuilders.nestedQuery(
          REF_ENTITY_ATT,
          QueryBuilders.matchPhrasePrefixQuery(PREFIX + refCompoundPart0AttributeName, value)
              .slop(10)
              .analyzer(DEFAULT_ANALYZER),
          ScoreMode.Avg);
  assertQueryBuilderEquals(expectedQuery, query);
}
 
源代码22 项目: spring-boot-tutorial   文件: BookRepositoryTest.java
@Test
public void shouldReturnBooksForGivenBucketUsingTemplate() {

    template.deleteIndex(Book.class);
    template.createIndex(Book.class);
    template.putMapping(Book.class);
    template.refresh(Book.class);

    Book book1 = new Book(RandomUtil.randomString(5, 10), "test1", System.currentTimeMillis());
    Book book2 = new Book(RandomUtil.randomString(5, 10), "test2", System.currentTimeMillis());

    Map<Integer, Collection<String>> map1 = new HashMap<>();
    map1.put(1, Arrays.asList("test1", "test2"));

    Map<Integer, Collection<String>> map2 = new HashMap<>();
    map2.put(1, Arrays.asList("test3", "test4"));

    book1.setBuckets(map1);
    book2.setBuckets(map2);

    repository.saveAll(Arrays.asList(book1, book2));

    SearchQuery searchQuery = new NativeSearchQueryBuilder()
        .withQuery(nestedQuery("buckets", termQuery("buckets.1", "test3"), ScoreMode.Total))
        .build();

    Page<Book> books = repository.search(searchQuery);

    Assertions.assertThat(books.getContent()).hasSize(1);
}
 
源代码23 项目: spring-boot-tutorial   文件: BookRepositoryTest.java
@Test
public void shouldReturnBooksForGivenBucketUsingTemplate() {

    template.deleteIndex(Book.class);
    template.createIndex(Book.class);
    template.putMapping(Book.class);
    template.refresh(Book.class);

    Book book1 = new Book(RandomUtil.randomString(5, 10), "test1", System.currentTimeMillis());
    Book book2 = new Book(RandomUtil.randomString(5, 10), "test2", System.currentTimeMillis());

    Map<Integer, Collection<String>> map1 = new HashMap<>();
    map1.put(1, Arrays.asList("test1", "test2"));

    Map<Integer, Collection<String>> map2 = new HashMap<>();
    map2.put(1, Arrays.asList("test3", "test4"));

    book1.setBuckets(map1);
    book2.setBuckets(map2);

    repository.saveAll(Arrays.asList(book1, book2));

    SearchQuery searchQuery = new NativeSearchQueryBuilder()
        .withQuery(nestedQuery("buckets", termQuery("buckets.1", "test3"), ScoreMode.Total))
        .build();

    Page<Book> books = repository.search(searchQuery);

    Assertions.assertThat(books.getContent()).hasSize(1);
}
 
private NestedQueryBuilder detectorIdQuery(SearchMappingsRequest searchMappingsRequest) {
    return QueryBuilders.nestedQuery(PercolatorDetectorMapping.DETECTOR_KEYWORD,
            QueryBuilders.boolQuery().must(QueryBuilders.matchPhraseQuery(
                    PercolatorDetectorMapping.DETECTOR_KEYWORD + "." + PercolatorDetectorMapping.DETECTOR_ID_KEYWORD,
                    searchMappingsRequest.getDetectorUuid().toString())),
            ScoreMode.None);
}
 
private NestedQueryBuilder userIdQuery(SearchMappingsRequest searchMappingsRequest) {
    return QueryBuilders.nestedQuery(PercolatorDetectorMapping.USER_KEYWORD,
            QueryBuilders.boolQuery().must(QueryBuilders.matchPhraseQuery(
                    PercolatorDetectorMapping.USER_KEYWORD + "." + PercolatorDetectorMapping.USER_ID_KEYWORD,
                    searchMappingsRequest.getUserId())),
            ScoreMode.None);
}
 
/**
 * Add query or nested query depending on the provided field.
 * if the field name contains a dot "." then we should extract the index name
 *
 * @param parameter query parameters
 * @param function  a supplier that defines the query that will be added
 * @return an instance of {@link NativeSearchQueryBuilder}
 */
private NativeSearchQueryBuilder getQuery(QueryParameter parameter,
                                          Supplier<AbstractQueryBuilder> function) {

  if (StringUtils.contains(parameter.getField(), DOT)) {
    String indexName = StringUtils.substringBeforeLast(parameter.getField(), DOT);
    return searchQuery.withQuery(nestedQuery(indexName, function.get(), ScoreMode.None));
  } else {
    return searchQuery.withQuery(function.get());
  }

}
 
源代码27 项目: molgenis   文件: QueryGeneratorReferencesIT.java
@Test
void generateOneQueryRuleLesserInt() {
  Integer value = 1;
  Query<Entity> q = new QueryImpl<>().lt(PREFIX + refIntAttributeName, value);
  QueryBuilder query = queryGenerator.createQueryBuilder(q, entityType);
  QueryBuilder expectedQuery =
      constantScoreQuery(
          nestedQuery(
              REF_ENTITY_ATT, rangeQuery(PREFIX + refIntAttributeName).lt(value), ScoreMode.Avg));
  assertQueryBuilderEquals(expectedQuery, query);
}
 
源代码28 项目: Stargraph   文件: ElasticSearchQueryGenerator.java
@Override
public SearchQueryHolder findPropertyInstances(ModifiableSearchParams searchParams) {
    QueryBuilder queryBuilder = boolQuery()
            .should(nestedQuery("hyponyms",
                    matchQuery("hyponyms.word", searchParams.getSearchTerm()), ScoreMode.Max))
            .should(nestedQuery("hypernyms",
                    matchQuery("hypernyms.word", searchParams.getSearchTerm()), ScoreMode.Max))
            .should(nestedQuery("synonyms",
                    matchQuery("synonyms.word", searchParams.getSearchTerm()), ScoreMode.Max))
            .minimumNumberShouldMatch(1);

    return new ElasticQueryHolder(queryBuilder, searchParams);
}
 
源代码29 项目: molgenis   文件: QueryGeneratorReferencesIT.java
@Test
void generateOneQueryRuleLesserEqualDecimal() {
  Double value = 1.23;
  Query<Entity> q = new QueryImpl<>().le(PREFIX + refDecimalAttributeName, value);
  QueryBuilder query = queryGenerator.createQueryBuilder(q, entityType);
  QueryBuilder expectedQuery =
      constantScoreQuery(
          nestedQuery(
              REF_ENTITY_ATT,
              rangeQuery(PREFIX + refDecimalAttributeName).lte(value),
              ScoreMode.Avg));
  assertQueryBuilderEquals(expectedQuery, query);
}
 
源代码30 项目: molgenis   文件: QueryGeneratorReferencesIT.java
@Test
void generateOneQueryRuleRangeInt() {
  Integer low = 3;
  Integer high = 9;
  Query<Entity> q = new QueryImpl<>().rng(PREFIX + refIntAttributeName, low, high);
  QueryBuilder query = queryGenerator.createQueryBuilder(q, entityType);
  QueryBuilder expectedQuery =
      constantScoreQuery(
          nestedQuery(
              REF_ENTITY_ATT,
              rangeQuery(PREFIX + refIntAttributeName).gte(3).lte(9),
              ScoreMode.Avg));
  assertQueryBuilderEquals(expectedQuery, query);
}
 
 类所在包
 类方法
 同包方法