try (JsonXContentParser parser = new JsonXContentParser(new NamedXContentRegistry(new SearchModule(Settings.EMPTY, true, Collections.emptyList()).getNamedXContents()), LoggingDeprecationHandler.INSTANCE, new JsonFactory().createParser(paramer.clauses))) { while (parser.nextToken() != XContentParser.Token.END_ARRAY) { QueryBuilder query = SpanNearQueryBuilder.parseInnerQueryBuilder(parser); if (!(query instanceof SpanQueryBuilder)) { throw new ParsingException(parser.getTokenLocation(), "spanNear [clauses] must be of type span query"); spanNearQuery.addClause(clauses.get(i));
public static SpanNearQueryBuilder spanNearQuery(SpanQueryBuilder initialClause, int slop) { return new SpanNearQueryBuilder(initialClause, slop); }
if (CLAUSES_FIELD.match(currentFieldName, parser.getDeprecationHandler())) { while ((token = parser.nextToken()) != XContentParser.Token.END_ARRAY) { QueryBuilder query = parseInnerQueryBuilder(parser); if (query instanceof SpanQueryBuilder == false) { throw new ParsingException(parser.getTokenLocation(), "span_near [clauses] must be of type span query"); SpanNearQueryBuilder queryBuilder = new SpanNearQueryBuilder(clauses.get(0), slop); for (int i = 1; i < clauses.size(); i++) { queryBuilder.addClause(clauses.get(i)); queryBuilder.inOrder(inOrder); queryBuilder.boost(boost); queryBuilder.queryName(queryName); return queryBuilder;
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; }
@Override protected void doWriteTo(StreamOutput out) throws IOException { writeQueries(out, clauses); out.writeVInt(slop); out.writeBoolean(inOrder); }
/** * Read from a stream. */ public SpanNearQueryBuilder(StreamInput in) throws IOException { super(in); for (QueryBuilder clause : readQueries(in)) { this.clauses.add((SpanQueryBuilder) clause); } slop = in.readVInt(); inOrder = in.readBoolean(); }
@Override protected void doXContent(XContentBuilder builder, Params params) throws IOException { builder.startObject(NAME); builder.startArray(CLAUSES_FIELD.getPreferredName()); for (SpanQueryBuilder clause : clauses) { clause.toXContent(builder, params); } builder.endArray(); builder.field(SLOP_FIELD.getPreferredName(), slop); builder.field(IN_ORDER_FIELD.getPreferredName(), inOrder); printBoostAndQueryName(builder); builder.endObject(); }
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; } } }
SpanNearQueryBuilder queryBuilder = new SpanNearQueryBuilder(clauses.get(0), slop); for (int i = 1; i < clauses.size(); i++) { queryBuilder.addClause(clauses.get(i)); queryBuilder.inOrder(inOrder); queryBuilder.boost(boost); queryBuilder.queryName(queryName); return Optional.of(queryBuilder);
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; }
@Override protected void doWriteTo(StreamOutput out) throws IOException { writeQueries(out, clauses); out.writeVInt(slop); out.writeBoolean(inOrder); }
/** * Read from a stream. */ public SpanNearQueryBuilder(StreamInput in) throws IOException { super(in); for (QueryBuilder clause : readQueries(in)) { this.clauses.add((SpanQueryBuilder) clause); } slop = in.readVInt(); inOrder = in.readBoolean(); }
@Override protected void doXContent(XContentBuilder builder, Params params) throws IOException { builder.startObject(NAME); builder.startArray(CLAUSES_FIELD.getPreferredName()); for (SpanQueryBuilder clause : clauses) { clause.toXContent(builder, params); } builder.endArray(); builder.field(SLOP_FIELD.getPreferredName(), slop); builder.field(IN_ORDER_FIELD.getPreferredName(), inOrder); printBoostAndQueryName(builder); builder.endObject(); }
if (CLAUSES_FIELD.match(currentFieldName, parser.getDeprecationHandler())) { while ((token = parser.nextToken()) != XContentParser.Token.END_ARRAY) { QueryBuilder query = parseInnerQueryBuilder(parser); if (query instanceof SpanQueryBuilder == false) { throw new ParsingException(parser.getTokenLocation(), "spanNear [clauses] must be of type span query"); SpanNearQueryBuilder queryBuilder = new SpanNearQueryBuilder(clauses.get(0), slop); for (int i = 1; i < clauses.size(); i++) { queryBuilder.addClause(clauses.get(i)); queryBuilder.inOrder(inOrder); queryBuilder.boost(boost); queryBuilder.queryName(queryName); return queryBuilder;
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 static SpanNearQueryBuilder spanNearQuery(SpanQueryBuilder initialClause, int slop) { return new SpanNearQueryBuilder(initialClause, slop); }
@Override protected void doWriteTo(StreamOutput out) throws IOException { writeQueries(out, clauses); out.writeVInt(slop); out.writeBoolean(inOrder); }
/** * Read from a stream. */ public SpanNearQueryBuilder(StreamInput in) throws IOException { super(in); for (QueryBuilder clause : readQueries(in)) { this.clauses.add((SpanQueryBuilder) clause); } slop = in.readVInt(); inOrder = in.readBoolean(); }