moreLikeThisQueryBuilder.minTermFreq(query.getMinTermFreq()); moreLikeThisQueryBuilder.maxQueryTerms(query.getMaxQueryTerms()); moreLikeThisQueryBuilder.stopWords(toArray(query.getStopWords())); moreLikeThisQueryBuilder.minDocFreq(query.getMinDocFreq()); moreLikeThisQueryBuilder.maxDocFreq(query.getMaxDocFreq()); moreLikeThisQueryBuilder.minWordLength(query.getMinWordLen()); moreLikeThisQueryBuilder.maxWordLength(query.getMaxWordLen()); moreLikeThisQueryBuilder.boostTerms(query.getBoostTerms());
/** * A more like this query that finds documents that are "like" the provided texts or documents * which is checked against the fields the query is constructed with. * * @param fields the field names that will be used when generating the 'More Like This' query. * @param likeTexts the text to use when generating the 'More Like This' query. * @param likeItems the documents to use when generating the 'More Like This' query. */ public static MoreLikeThisQueryBuilder moreLikeThisQuery(String[] fields, String[] likeTexts, Item[] likeItems) { return new MoreLikeThisQueryBuilder(fields, likeTexts, likeItems); }
} else if (token.isValue()) { if (LIKE.match(currentFieldName, parser.getDeprecationHandler())) { parseLikeField(parser, likeTexts, likeItems); } else if (UNLIKE.match(currentFieldName, parser.getDeprecationHandler())) { parseLikeField(parser, unlikeTexts, unlikeItems); } else if (MAX_QUERY_TERMS.match(currentFieldName, parser.getDeprecationHandler())) { maxQueryTerms = parser.intValue(); parseLikeField(parser, likeTexts, likeItems); parseLikeField(parser, unlikeTexts, unlikeItems); parseLikeField(parser, likeTexts, likeItems); } else if (UNLIKE.match(currentFieldName, parser.getDeprecationHandler())) { parseLikeField(parser, unlikeTexts, unlikeItems); } else { throw new ParsingException(parser.getTokenLocation(), "[mlt] query does not support [" + currentFieldName + "]"); MoreLikeThisQueryBuilder moreLikeThisQueryBuilder = new MoreLikeThisQueryBuilder(fieldsArray, likeTextsArray, likeItemsArray) .unlike(unlikeTextsArray) .unlike(unlikeItemsArray) .maxQueryTerms(maxQueryTerms) .minTermFreq(minTermFreq) .minDocFreq(minDocFreq) .maxDocFreq(maxDocFreq) .minWordLength(minWordLength) .maxWordLength(maxWordLength) .analyzer(analyzer) .minimumShouldMatch(minimumShouldMatch)
protected QueryBuilder createSimilarToTextQuery(SimilarToTextQueryParameters similarTo) { List<String> allFields = new ArrayList<>(); String[] fields = similarTo.getFields(); for (String field : fields) { Collections.addAll(allFields, getPropertyNames(field)); } MoreLikeThisQueryBuilder q = QueryBuilders.moreLikeThisQuery(allFields.toArray(new String[allFields.size()])) .like(similarTo.getText()); if (similarTo.getMinTermFrequency() != null) { q.minTermFreq(similarTo.getMinTermFrequency()); } if (similarTo.getMaxQueryTerms() != null) { q.maxQueryTerms(similarTo.getMaxQueryTerms()); } if (similarTo.getMinDocFrequency() != null) { q.minDocFreq(similarTo.getMinDocFrequency()); } if (similarTo.getMaxDocFrequency() != null) { q.maxDocFreq(similarTo.getMaxDocFrequency()); } if (similarTo.getBoost() != null) { q.boost(similarTo.getBoost()); } return q; }
getItems(value)); if (hint.analyzer != null) { moreLikeThisBuilder.analyzer(hint.analyzer); moreLikeThisBuilder.minDocFreq(MORE_LIKE_THIS_MIN_DOC_FREQ); moreLikeThisBuilder.minTermFreq(MORE_LIKE_THIS_MIN_TERM_FREQ); moreLikeThisBuilder.maxQueryTerms(MORE_LIKE_THIS_MAX_QUERY_TERMS); ret = moreLikeThisBuilder; break;
@Override public <P extends ParaObject> List<P> findSimilar(String appid, String type, String filterKey, String[] fields, String liketext, Pager... pager) { if (StringUtils.isBlank(liketext)) { return Collections.emptyList(); } QueryBuilder qb; FilterBuilder fb; if (fields == null || fields.length == 0) { qb = QueryBuilders.moreLikeThisQuery().likeText(liketext).minDocFreq(1).minTermFreq(1); } else { qb = QueryBuilders.moreLikeThisQuery(fields).likeText(liketext).minDocFreq(1).minTermFreq(1); } if (!StringUtils.isBlank(filterKey)) { fb = FilterBuilders.notFilter(FilterBuilders.inFilter(Config._ID, filterKey)); qb = QueryBuilders.filteredQuery(qb, fb); } return searchQuery(appid, searchQueryRaw(appid, type, qb, pager)); }
} else if (token.isValue()) { if (Field.LIKE.match(currentFieldName)) { parseLikeField(parseContext, likeTexts, likeItems); } else if (Field.UNLIKE.match(currentFieldName)) { parseLikeField(parseContext, unlikeTexts, unlikeItems); } else if (Field.LIKE_TEXT.match(currentFieldName)) { likeTexts.add(parser.text()); parseLikeField(parseContext, likeTexts, likeItems); parseLikeField(parseContext, unlikeTexts, unlikeItems); parseLikeField(parseContext, likeTexts, likeItems); } else if (Field.UNLIKE.match(currentFieldName)) { parseLikeField(parseContext, unlikeTexts, unlikeItems); } else { throw new ParsingException(parser.getTokenLocation(), "[mlt] query does not support [" + currentFieldName + "]"); MoreLikeThisQueryBuilder moreLikeThisQueryBuilder = new MoreLikeThisQueryBuilder(fieldsArray, likeTextsArray, likeItemsArray) .unlike(unlikeTextsArray) .unlike(unlikeItemsArray) .maxQueryTerms(maxQueryTerms) .minTermFreq(minTermFreq) .minDocFreq(minDocFreq) .maxDocFreq(maxDocFreq) .minWordLength(minWordLength) .maxWordLength(maxWordLength) .analyzer(analyzer) .minimumShouldMatch(minimumShouldMatch)
protected QueryBuilder createSimilarToTextQuery(SimilarToTextQueryParameters similarTo) { List<String> allFields = new ArrayList<>(); String[] fields = similarTo.getFields(); for (String field : fields) { Collections.addAll(allFields, getPropertyNames(field)); } MoreLikeThisQueryBuilder q = QueryBuilders.moreLikeThisQuery(allFields.toArray(new String[allFields.size()])) .likeText(similarTo.getText()); if (similarTo.getMinTermFrequency() != null) { q.minTermFreq(similarTo.getMinTermFrequency()); } if (similarTo.getMaxQueryTerms() != null) { q.maxQueryTerms(similarTo.getMaxQueryTerms()); } if (similarTo.getMinDocFrequency() != null) { q.minDocFreq(similarTo.getMinDocFrequency()); } if (similarTo.getMaxDocFrequency() != null) { q.maxDocFreq(similarTo.getMaxDocFrequency()); } if (similarTo.getBoost() != null) { q.boost(similarTo.getBoost()); } return q; }
} else if (token.isValue()) { if (LIKE.match(currentFieldName, parser.getDeprecationHandler())) { parseLikeField(parser, likeTexts, likeItems); } else if (UNLIKE.match(currentFieldName, parser.getDeprecationHandler())) { parseLikeField(parser, unlikeTexts, unlikeItems); } else if (MAX_QUERY_TERMS.match(currentFieldName, parser.getDeprecationHandler())) { maxQueryTerms = parser.intValue(); parseLikeField(parser, likeTexts, likeItems); parseLikeField(parser, unlikeTexts, unlikeItems); parseLikeField(parser, likeTexts, likeItems); } else if (UNLIKE.match(currentFieldName, parser.getDeprecationHandler())) { parseLikeField(parser, unlikeTexts, unlikeItems); } else { throw new ParsingException(parser.getTokenLocation(), "[mlt] query does not support [" + currentFieldName + "]"); MoreLikeThisQueryBuilder moreLikeThisQueryBuilder = new MoreLikeThisQueryBuilder(fieldsArray, likeTextsArray, likeItemsArray) .unlike(unlikeTextsArray) .unlike(unlikeItemsArray) .maxQueryTerms(maxQueryTerms) .minTermFreq(minTermFreq) .minDocFreq(minDocFreq) .maxDocFreq(maxDocFreq) .minWordLength(minWordLength) .maxWordLength(maxWordLength) .analyzer(analyzer) .minimumShouldMatch(minimumShouldMatch)
protected QueryBuilder createSimilarToTextQuery(SimilarToTextQueryParameters similarTo) { List<String> allFields = new ArrayList<>(); String[] fields = similarTo.getFields(); for (String field : fields) { Collections.addAll(allFields, getPropertyNames(field)); } MoreLikeThisQueryBuilder q = QueryBuilders.moreLikeThisQuery( allFields.toArray(new String[allFields.size()]), new String[]{similarTo.getText()}, null ); if (similarTo.getMinTermFrequency() != null) { q.minTermFreq(similarTo.getMinTermFrequency()); } if (similarTo.getMaxQueryTerms() != null) { q.maxQueryTerms(similarTo.getMaxQueryTerms()); } if (similarTo.getMinDocFrequency() != null) { q.minDocFreq(similarTo.getMinDocFrequency()); } if (similarTo.getMaxDocFrequency() != null) { q.maxDocFreq(similarTo.getMaxDocFrequency()); } if (similarTo.getBoost() != null) { q.boost(similarTo.getBoost()); } return q; }
moreLikeThisQueryBuilder.minTermFreq(query.getMinTermFreq()); moreLikeThisQueryBuilder.maxQueryTerms(query.getMaxQueryTerms()); moreLikeThisQueryBuilder.stopWords(toArray(query.getStopWords())); moreLikeThisQueryBuilder.minDocFreq(query.getMinDocFreq()); moreLikeThisQueryBuilder.maxDocFreq(query.getMaxDocFreq()); moreLikeThisQueryBuilder.minWordLength(query.getMinWordLen()); moreLikeThisQueryBuilder.maxWordLength(query.getMaxWordLen()); moreLikeThisQueryBuilder.boostTerms(query.getBoostTerms());
/** * A more like this query that finds documents that are "like" the provided texts or documents * which is checked against the fields the query is constructed with. * * @param fields the field names that will be used when generating the 'More Like This' query. * @param likeTexts the text to use when generating the 'More Like This' query. * @param likeItems the documents to use when generating the 'More Like This' query. */ public static MoreLikeThisQueryBuilder moreLikeThisQuery(String[] fields, String[] likeTexts, Item[] likeItems) { return new MoreLikeThisQueryBuilder(fields, likeTexts, likeItems); }
} else if (token.isValue()) { if (LIKE.match(currentFieldName, parser.getDeprecationHandler())) { parseLikeField(parser, likeTexts, likeItems); } else if (UNLIKE.match(currentFieldName, parser.getDeprecationHandler())) { parseLikeField(parser, unlikeTexts, unlikeItems); } else if (MAX_QUERY_TERMS.match(currentFieldName, parser.getDeprecationHandler())) { maxQueryTerms = parser.intValue(); parseLikeField(parser, likeTexts, likeItems); parseLikeField(parser, unlikeTexts, unlikeItems); parseLikeField(parser, likeTexts, likeItems); } else if (UNLIKE.match(currentFieldName, parser.getDeprecationHandler())) { parseLikeField(parser, unlikeTexts, unlikeItems); } else { throw new ParsingException(parser.getTokenLocation(), "[mlt] query does not support [" + currentFieldName + "]"); MoreLikeThisQueryBuilder moreLikeThisQueryBuilder = new MoreLikeThisQueryBuilder(fieldsArray, likeTextsArray, likeItemsArray) .unlike(unlikeTextsArray) .unlike(unlikeItemsArray) .maxQueryTerms(maxQueryTerms) .minTermFreq(minTermFreq) .minDocFreq(minDocFreq) .maxDocFreq(maxDocFreq) .minWordLength(minWordLength) .maxWordLength(maxWordLength) .analyzer(analyzer) .minimumShouldMatch(minimumShouldMatch)
protected QueryBuilder createSimilarToTextQuery(SimilarToTextQueryParameters similarTo) { List<String> allFields = new ArrayList<>(); String[] fields = similarTo.getFields(); for (String field : fields) { Collections.addAll(allFields, getPropertyNames(field)); } MoreLikeThisQueryBuilder q = QueryBuilders.moreLikeThisQuery( allFields.toArray(new String[allFields.size()]), new String[]{similarTo.getText()}, null ); if (similarTo.getMinTermFrequency() != null) { q.minTermFreq(similarTo.getMinTermFrequency()); } if (similarTo.getMaxQueryTerms() != null) { q.maxQueryTerms(similarTo.getMaxQueryTerms()); } if (similarTo.getMinDocFrequency() != null) { q.minDocFreq(similarTo.getMinDocFrequency()); } if (similarTo.getMaxDocFrequency() != null) { q.maxDocFreq(similarTo.getMaxDocFrequency()); } if (similarTo.getBoost() != null) { q.boost(similarTo.getBoost()); } return q; }
/** * A more like this query that finds documents that are "like" the provided texts or documents * which is checked against the fields the query is constructed with. * * @param fields the field names that will be used when generating the 'More Like This' query. * @param likeTexts the text to use when generating the 'More Like This' query. * @param likeItems the documents to use when generating the 'More Like This' query. */ public static MoreLikeThisQueryBuilder moreLikeThisQuery(String[] fields, String[] likeTexts, Item[] likeItems) { return new MoreLikeThisQueryBuilder(fields, likeTexts, likeItems); }
SimilarToTextQueryParameters similarTo = (SimilarToTextQueryParameters) queryParameters; MoreLikeThisQueryBuilder q = QueryBuilders.moreLikeThisQuery(similarTo.getFields()) .likeText(similarTo.getText()); if (similarTo.getPercentTermsToMatch() != null) { q.percentTermsToMatch(similarTo.getPercentTermsToMatch()); q.minTermFreq(similarTo.getMinTermFrequency()); q.maxQueryTerms(similarTo.getMaxQueryTerms()); q.minDocFreq(similarTo.getMinDocFrequency()); q.maxDocFreq(similarTo.getMaxDocFrequency()); q.boost(similarTo.getBoost());
/** * A more like this query that finds documents that are "like" the provided texts or documents * which is checked against the fields the query is constructed with. * * @param fields the field names that will be used when generating the 'More Like This' query. * @param likeTexts the text to use when generating the 'More Like This' query. * @param likeItems the documents to use when generating the 'More Like This' query. */ public static MoreLikeThisQueryBuilder moreLikeThisQuery(String[] fields, String[] likeTexts, Item[] likeItems) { return new MoreLikeThisQueryBuilder(fields, likeTexts, likeItems); }
/** * A more like this query that finds documents that are "like" the provided {@link MoreLikeThisQueryBuilder#likeText(String)} * which is checked against the fields the query is constructed with. * * @param fields The fields to run the query against */ public static MoreLikeThisQueryBuilder moreLikeThisQuery(String... fields) { return new MoreLikeThisQueryBuilder(fields); }
/** * A more like this query that finds documents that are "like" the provided {@link MoreLikeThisQueryBuilder#likeText(String)} * which is checked against the "_all" field. */ public static MoreLikeThisQueryBuilder moreLikeThisQuery() { return new MoreLikeThisQueryBuilder(); }