SpanNearQueryBuilder spanNearQuery = QueryBuilders.spanNearQuery(clauses.get(0), Optional.ofNullable(paramer.slop).orElse(SpanNearQueryBuilder.DEFAULT_SLOP)); for (int i = 1; i < clauses.size(); ++i) { spanNearQuery.addClause(clauses.get(i));
protected QueryBuilder transformTokenList(String field, List<String> tokens) { if (tokens.size() == 1) { return QueryBuilders.termQuery(field, tokens.get(0)); } else { Monoflop monoflop = Monoflop.create(); SpanNearQueryBuilder builder = null; for (String token : tokens) { if (monoflop.firstCall()) { builder = QueryBuilders.spanNearQuery(QueryBuilders.spanTermQuery(field, token), 3); } else { builder.addClause(QueryBuilders.spanTermQuery(field, token)); } } return builder; } } }
public long count(Ngram ngram){ if (ngram.getTerms().length == 0) { throw new IllegalArgumentException("No terms for span"); } String field = ngram.getField(); int slop = ngram.getSlop(); boolean inOrder = ngram.isInOrder(); SpanNearQueryBuilder queryBuilder = QueryBuilders.spanNearQuery(new SpanTermQueryBuilder(field, ngram.getTerms()[0]), slop); for (int i = 1; i < ngram.getTerms().length; i++){ queryBuilder.addClause(new SpanTermQueryBuilder(field, ngram.getTerms()[1])); } queryBuilder.inOrder(inOrder); long hits = client.prepareSearch(this.indexName).setQuery(queryBuilder) .execute().actionGet().getHits().getTotalHits(); return hits; }
@Override public SpanNearQueryBuilder createQuery() { Monoflop mflop = Monoflop.create(); SpanNearQueryBuilder builder = null; for (SpanConstraint constraint : constraints) { if (mflop.firstCall()) { builder = QueryBuilders.spanNearQuery(constraint.createSpanQuery(), slop).inOrder(inOrder).boost(boost); } else { builder.addClause(constraint.createSpanQuery()).inOrder(inOrder).boost(boost); } } return builder; }
public long count(Ngram ngram, String[] ids){ String field = ngram.getField(); int slop = ngram.getSlop(); boolean inOrder = ngram.isInOrder(); SpanNearQueryBuilder queryBuilder = QueryBuilders.spanNearQuery(new SpanTermQueryBuilder(field, ngram.getTerms()[0]), slop); for (int i = 1; i < ngram.getTerms().length; i++){ queryBuilder.addClause(new SpanTermQueryBuilder(field, ngram.getTerms()[1])); } queryBuilder.inOrder(inOrder); IdsQueryBuilder idsFilterBuilder = new IdsQueryBuilder(documentType); idsFilterBuilder.addIds(ids); long hits = client.prepareSearch(this.indexName).setQuery(queryBuilder) .execute().actionGet().getHits().getTotalHits(); return hits; }
public SearchResponse spanNear(Ngram ngram, int size){ String field = ngram.getField(); int slop = ngram.getSlop(); boolean inOrder = ngram.isInOrder(); SpanNearQueryBuilder queryBuilder = QueryBuilders.spanNearQuery(new SpanTermQueryBuilder(field, ngram.getTerms()[0]), slop); for (int i = 1; i < ngram.getTerms().length; i++){ queryBuilder.addClause(new SpanTermQueryBuilder(field, ngram.getTerms()[1])); } queryBuilder.inOrder(inOrder); SearchResponse response = client.prepareSearch(indexName).setSize(size) .setTrackScores(false) .setFetchSource(false).setExplain(false).setFetchSource(false). setQuery(ngram.getTerms().length > 1 ? queryBuilder : QueryBuilders.matchPhraseQuery(field, ngram.getTerms()[0]).slop(slop)) .execute().actionGet(); System.out.println(response.getHits().getTotalHits()); return response; }
public SearchResponse spanNear(Ngram ngram){ if (ngram.getTerms().length == 0) { throw new IllegalStateException("No terms found for span"); } String field = ngram.getField(); int slop = ngram.getSlop(); boolean inOrder = ngram.isInOrder(); SpanNearQueryBuilder queryBuilder = QueryBuilders.spanNearQuery(new SpanTermQueryBuilder(field, ngram.getTerms()[0]), slop); for (int i = 1; i < ngram.getTerms().length; i++){ queryBuilder.addClause(new SpanTermQueryBuilder(field, ngram.getTerms()[i])); } queryBuilder.inOrder(inOrder); SearchResponse response = client.prepareSearch(indexName).setSize(this.numDocs). setTrackScores(false). setFetchSource(false).setExplain(false).setFetchSource(false). setQuery(ngram.getTerms().length > 1 ? queryBuilder : QueryBuilders.matchPhraseQuery(field, ngram.getTerms()[0]).slop(slop)) .execute().actionGet(); return response; }
public SearchResponse spanNear(Ngram ngram, String filterQuery, int size){ if (ngram.getTerms().length == 0) { throw new IllegalArgumentException("no terms for span"); } String field = ngram.getField(); int slop = ngram.getSlop(); boolean inOrder = ngram.isInOrder(); SpanNearQueryBuilder queryBuilder = QueryBuilders.spanNearQuery(new SpanTermQueryBuilder(field, ngram.getTerms()[0]), slop); for (int i = 1; i < ngram.getTerms().length; i++){ queryBuilder.addClause(new SpanTermQueryBuilder(field, ngram.getTerms()[i])); } queryBuilder.inOrder(inOrder); SearchResponse response = client.prepareSearch(indexName).setSize(size). setTrackScores(false). setFetchSource(false).setExplain(false).setFetchSource(false) .setQuery(QueryBuilders.boolQuery() .filter(QueryBuilders.wrapperQuery(filterQuery)) .must(ngram.getTerms().length > 1 ? queryBuilder : QueryBuilders.matchPhraseQuery(field, ngram.getTerms()[0]).slop(slop))) .execute().actionGet(); return response; }
int slop1 = include.getSlop(); boolean inOrder1 = include.isInOrder(); SpanNearQueryBuilder queryBuilder1 = QueryBuilders.spanNearQuery(new SpanTermQueryBuilder(field1, include.getTerms()[0]), slop1); for (int i = 1; i < include.getTerms().length; i++){ queryBuilder1.addClause(new SpanTermQueryBuilder(field1, include.getTerms()[i])); int slop2 = exclude.getSlop(); boolean inOrder2 = exclude.isInOrder(); SpanNearQueryBuilder queryBuilder2 = QueryBuilders.spanNearQuery(new SpanTermQueryBuilder(field2, exclude.getTerms()[0]), slop2); for (int i = 1; i < exclude.getTerms().length; i++){ queryBuilder2.addClause(new SpanTermQueryBuilder(field2, exclude.getTerms()[i]));
int slop1 = include.getSlop(); boolean inOrder1 = include.isInOrder(); SpanNearQueryBuilder queryBuilder1 = QueryBuilders.spanNearQuery(new SpanTermQueryBuilder(field1, include.getTerms()[0]), slop1); for (int i = 1; i < include.getTerms().length; i++){ queryBuilder1.addClause(new SpanTermQueryBuilder(field1, include.getTerms()[i])); int slop2 = exclude.getSlop(); boolean inOrder2 = exclude.isInOrder(); SpanNearQueryBuilder queryBuilder2 = QueryBuilders.spanNearQuery(new SpanTermQueryBuilder(field2, exclude.getTerms()[0]), slop2); for (int i = 1; i < exclude.getTerms().length; i++){ queryBuilder2.addClause(new SpanTermQueryBuilder(field2, exclude.getTerms()[i]));
int slop = ngram.getSlop(); boolean inOrder = ngram.isInOrder(); SpanNearQueryBuilder queryBuilder = QueryBuilders.spanNearQuery(new SpanTermQueryBuilder(field, ngram.getTerms()[0]), slop); for (int i = 1; i < ngram.getTerms().length; i++){ queryBuilder.addClause(new SpanTermQueryBuilder(field, ngram.getTerms()[i]));
int slop1 = include.getSlop(); boolean inOrder1 = include.isInOrder(); SpanNearQueryBuilder queryBuilder1 = QueryBuilders.spanNearQuery(new SpanTermQueryBuilder(field1, include.getTerms()[0]), slop1); for (int i = 1; i < include.getTerms().length; i++){ queryBuilder1.addClause(new SpanTermQueryBuilder(field1, include.getTerms()[i])); int slop2 = exclude.getSlop(); boolean inOrder2 = exclude.isInOrder(); SpanNearQueryBuilder queryBuilder2 = QueryBuilders.spanNearQuery(new SpanTermQueryBuilder(field2, exclude.getTerms()[0]), slop2); for (int i = 1; i < exclude.getTerms().length; i++){ queryBuilder2.addClause(new SpanTermQueryBuilder(field2, exclude.getTerms()[i]));