org.apache.lucene.search.Query.rewrite()方法的使用及代码示例

x33g5p2x  于2022-01-28 转载在 其他  
字(9.0k)|赞(0)|评价(0)|浏览(233)

本文整理了Java中org.apache.lucene.search.Query.rewrite方法的一些代码示例,展示了Query.rewrite的具体用法。这些代码示例主要来源于Github/Stackoverflow/Maven等平台,是从一些精选项目中提取出来的代码,具有较强的参考意义,能在一定程度帮忙到你。Query.rewrite方法的具体详情如下:
包路径:org.apache.lucene.search.Query
类名称:Query
方法名:rewrite

Query.rewrite介绍

[英]Expert: called to re-write queries into primitive queries. For example, a PrefixQuery will be rewritten into a BooleanQuery that consists of TermQuerys.
[中]专家:调用以将查询重新写入原始查询。例如,PrefixQuery将被重写为包含TermQuerys的布尔查询。

代码示例

代码示例来源:origin: org.apache.lucene/lucene-core

  1. /** Expert: called to re-write queries into primitive queries.
  2. * @throws BooleanQuery.TooManyClauses If a query would exceed
  3. * {@link BooleanQuery#getMaxClauseCount()} clauses.
  4. */
  5. public Query rewrite(Query original) throws IOException {
  6. Query query = original;
  7. for (Query rewrittenQuery = query.rewrite(reader); rewrittenQuery != query;
  8. rewrittenQuery = query.rewrite(reader)) {
  9. query = rewrittenQuery;
  10. }
  11. return query;
  12. }

代码示例来源:origin: org.apache.lucene/lucene-core

  1. @Override
  2. public Query rewrite(IndexReader reader) throws IOException {
  3. Query indexRewrite = indexQuery.rewrite(reader);
  4. Query dvRewrite = dvQuery.rewrite(reader);
  5. if (indexQuery != indexRewrite || dvQuery != dvRewrite) {
  6. return new IndexOrDocValuesQuery(indexRewrite, dvRewrite);
  7. }
  8. return this;
  9. }

代码示例来源:origin: org.apache.lucene/lucene-core

  1. @Override
  2. public Query rewrite(IndexReader reader) throws IOException {
  3. if (lowerValue == null && upperValue == null) {
  4. return new DocValuesFieldExistsQuery(field);
  5. }
  6. return super.rewrite(reader);
  7. }

代码示例来源:origin: org.apache.lucene/lucene-core

  1. @Override
  2. public Query rewrite(IndexReader reader) throws IOException {
  3. if (lowerValue == Long.MIN_VALUE && upperValue == Long.MAX_VALUE) {
  4. return new DocValuesFieldExistsQuery(field);
  5. }
  6. return super.rewrite(reader);
  7. }

代码示例来源:origin: org.apache.lucene/lucene-core

  1. @Override
  2. public Query rewrite(IndexReader reader) throws IOException {
  3. Query rewritten = query.rewrite(reader);
  4. if (rewritten != query) {
  5. return new ConstantScoreQuery(rewritten);
  6. }
  7. if (rewritten.getClass() == ConstantScoreQuery.class) {
  8. return rewritten;
  9. }
  10. if (rewritten.getClass() == BoostQuery.class) {
  11. return new ConstantScoreQuery(((BoostQuery) rewritten).getQuery());
  12. }
  13. return super.rewrite(reader);
  14. }

代码示例来源:origin: org.apache.lucene/lucene-core

  1. @Override
  2. public Query rewrite(IndexReader reader) throws IOException {
  3. FeatureFunction rewritten = function.rewrite(reader);
  4. if (function != rewritten) {
  5. return new FeatureQuery(fieldName, featureName, rewritten);
  6. }
  7. return super.rewrite(reader);
  8. }

代码示例来源:origin: org.apache.lucene/lucene-core

  1. @Override
  2. public Query rewrite(IndexReader reader) throws IOException {
  3. if (terms.length == 0) {
  4. return new MatchNoDocsQuery("empty PhraseQuery");
  5. } else if (terms.length == 1) {
  6. return new TermQuery(terms[0]);
  7. } else if (positions[0] != 0) {
  8. int[] newPositions = new int[positions.length];
  9. for (int i = 0; i < positions.length; ++i) {
  10. newPositions[i] = positions[i] - positions[0];
  11. }
  12. return new PhraseQuery(slop, terms, newPositions);
  13. } else {
  14. return super.rewrite(reader);
  15. }
  16. }

代码示例来源:origin: oracle/opengrok

  1. rewrittenQuery = query.rewrite(getIndexReader());

代码示例来源:origin: org.apache.lucene/lucene-core

  1. @Override
  2. public Query rewrite(IndexReader reader) throws IOException {
  3. final Query rewritten = query.rewrite(reader);
  4. if (boost == 1f) {
  5. return rewritten;
  6. }
  7. if (rewritten.getClass() == BoostQuery.class) {
  8. BoostQuery in = (BoostQuery) rewritten;
  9. return new BoostQuery(in.query, boost * in.boost);
  10. }
  11. if (boost == 0f && rewritten.getClass() != ConstantScoreQuery.class) {
  12. // so that we pass needScores=false
  13. return new BoostQuery(new ConstantScoreQuery(rewritten), 0f);
  14. }
  15. if (query != rewritten) {
  16. return new BoostQuery(rewritten, boost);
  17. }
  18. return super.rewrite(reader);
  19. }

代码示例来源:origin: org.apache.lucene/lucene-core

  1. /** Optimize our representation and our subqueries representations
  2. * @param reader the IndexReader we query
  3. * @return an optimized copy of us (which may not be a copy if there is nothing to optimize) */
  4. @Override
  5. public Query rewrite(IndexReader reader) throws IOException {
  6. if (disjuncts.length == 1) {
  7. return disjuncts[0];
  8. }
  9. if (tieBreakerMultiplier == 1.0f) {
  10. BooleanQuery.Builder builder = new BooleanQuery.Builder();
  11. for (Query sub : disjuncts) {
  12. builder.add(sub, BooleanClause.Occur.SHOULD);
  13. }
  14. return builder.build();
  15. }
  16. boolean actuallyRewritten = false;
  17. List<Query> rewrittenDisjuncts = new ArrayList<>();
  18. for (Query sub : disjuncts) {
  19. Query rewrittenSub = sub.rewrite(reader);
  20. actuallyRewritten |= rewrittenSub != sub;
  21. rewrittenDisjuncts.add(rewrittenSub);
  22. }
  23. if (actuallyRewritten) {
  24. return new DisjunctionMaxQuery(rewrittenDisjuncts, tieBreakerMultiplier);
  25. }
  26. return super.rewrite(reader);
  27. }

代码示例来源:origin: org.apache.lucene/lucene-core

  1. @Override
  2. public Query rewrite(IndexReader reader) throws IOException {
  3. if (termArrays.length == 0) {
  4. return new MatchNoDocsQuery("empty MultiPhraseQuery");
  5. } else if (termArrays.length == 1) { // optimize one-term case
  6. Term[] terms = termArrays[0];
  7. BooleanQuery.Builder builder = new BooleanQuery.Builder();
  8. for (Term term : terms) {
  9. builder.add(new TermQuery(term), BooleanClause.Occur.SHOULD);
  10. }
  11. return builder.build();
  12. } else {
  13. return super.rewrite(reader);
  14. }
  15. }

代码示例来源:origin: org.apache.lucene/lucene-core

  1. @Override
  2. public Query rewrite(IndexReader reader) throws IOException {
  3. final int threshold = Math.min(BOOLEAN_REWRITE_TERM_COUNT_THRESHOLD, BooleanQuery.getMaxClauseCount());
  4. if (termData.size() <= threshold) {
  5. BooleanQuery.Builder bq = new BooleanQuery.Builder();
  6. TermIterator iterator = termData.iterator();
  7. for (BytesRef term = iterator.next(); term != null; term = iterator.next()) {
  8. bq.add(new TermQuery(new Term(iterator.field(), BytesRef.deepCopyOf(term))), Occur.SHOULD);
  9. }
  10. return new ConstantScoreQuery(bq.build());
  11. }
  12. return super.rewrite(reader);
  13. }

代码示例来源:origin: org.apache.lucene/lucene-core

  1. for (BooleanClause clause : this) {
  2. Query query = clause.getQuery();
  3. Query rewritten = query.rewrite(reader);
  4. if (rewritten != query) {
  5. actuallyRewritten = true;
  6. return super.rewrite(reader);

代码示例来源:origin: org.elasticsearch/elasticsearch

  1. @Override
  2. protected ScoreFunction rewrite(IndexReader reader) throws IOException {
  3. Query newFilter = filter.rewrite(reader);
  4. if (newFilter == filter) {
  5. return this;
  6. }
  7. return new FilterScoreFunction(newFilter, function);
  8. }

代码示例来源:origin: org.elasticsearch/elasticsearch

  1. @Override
  2. public Query rewrite(IndexReader reader) throws IOException {
  3. Query rewritten = super.rewrite(reader);
  4. if (rewritten != this) {
  5. return rewritten;
  6. }
  7. Query newQ = subQuery.rewrite(reader);
  8. ScoreFunction[] newFunctions = new ScoreFunction[functions.length];
  9. boolean needsRewrite = (newQ != subQuery);
  10. for (int i = 0; i < functions.length; i++) {
  11. newFunctions[i] = functions[i].rewrite(reader);
  12. needsRewrite |= (newFunctions[i] != functions[i]);
  13. }
  14. if (needsRewrite) {
  15. return new FunctionScoreQuery(newQ, scoreMode, newFunctions, combineFunction, minScore, maxBoost);
  16. }
  17. return this;
  18. }

代码示例来源:origin: org.elasticsearch/elasticsearch

  1. @Override
  2. public Query rewrite(IndexReader reader) throws IOException {
  3. Query innerRewrite = query.rewrite(reader);
  4. if (innerRewrite != query) {
  5. // Right now ToParentBlockJoinQuery always rewrites to a ToParentBlockJoinQuery
  6. // so the else block will never be used. It is useful in the case that
  7. // ToParentBlockJoinQuery one day starts to rewrite to a different query, eg.
  8. // a MatchNoDocsQuery if it realizes that it cannot match any docs and rewrites
  9. // to a MatchNoDocsQuery. In that case it would be fine to lose information
  10. // about the nested path.
  11. if (innerRewrite instanceof ToParentBlockJoinQuery) {
  12. return new ESToParentBlockJoinQuery((ToParentBlockJoinQuery) innerRewrite, path);
  13. } else {
  14. return innerRewrite;
  15. }
  16. }
  17. return super.rewrite(reader);
  18. }

代码示例来源:origin: org.elasticsearch/elasticsearch

  1. @Override
  2. public Query rewrite(IndexReader reader) throws IOException {
  3. Query rewritten = super.rewrite(reader);
  4. if (rewritten != this) {
  5. return rewritten;
  6. }
  7. boolean hasPayloads = false;
  8. for (LeafReaderContext context : reader.leaves()) {
  9. final Terms terms = context.reader().terms(term.field());
  10. if (terms != null) {
  11. if (terms.hasPayloads()) {
  12. hasPayloads = true;
  13. break;
  14. }
  15. }
  16. }
  17. // if the terms does not exist we could return a MatchNoDocsQuery but this would break the unified highlighter
  18. // which rewrites query with an empty reader.
  19. if (hasPayloads == false) {
  20. return new TermQuery(term);
  21. }
  22. return this;
  23. }

代码示例来源:origin: org.elasticsearch/elasticsearch

  1. @Override
  2. public Query rewrite(IndexReader reader) throws IOException {
  3. Query rewritten = super.rewrite(reader);
  4. if (rewritten != this) {
  5. return rewritten;
  6. }
  7. IndexReaderContext context = reader.getContext();
  8. TermContext[] ctx = new TermContext[terms.length];
  9. int[] docFreqs = new int[ctx.length];
  10. for (int i = 0; i < terms.length; i++) {
  11. ctx[i] = TermContext.build(context, terms[i]);
  12. docFreqs[i] = ctx[i].docFreq();
  13. }
  14. final int maxDoc = reader.maxDoc();
  15. blend(ctx, maxDoc, reader);
  16. return topLevelQuery(terms, ctx, docFreqs, maxDoc);
  17. }

代码示例来源:origin: org.elasticsearch/elasticsearch

  1. @Override
  2. public Query rewrite(IndexReader reader) throws IOException {
  3. Query rewritten = super.rewrite(reader);
  4. if (rewritten != this) {
  5. return rewritten;

代码示例来源:origin: org.elasticsearch/elasticsearch

  1. @Override
  2. public Query rewrite(IndexReader reader) throws IOException {
  3. Query rewritten = super.rewrite(reader);
  4. if (rewritten != this) {
  5. return rewritten;
  6. }
  7. XMoreLikeThis mlt = new XMoreLikeThis(reader, similarity == null ? new ClassicSimilarity() : similarity);
  8. mlt.setFieldNames(moreLikeFields);
  9. mlt.setAnalyzer(analyzer);
  10. mlt.setMinTermFreq(minTermFrequency);
  11. mlt.setMinDocFreq(minDocFreq);
  12. mlt.setMaxDocFreq(maxDocFreq);
  13. mlt.setMaxQueryTerms(maxQueryTerms);
  14. mlt.setMinWordLen(minWordLen);
  15. mlt.setMaxWordLen(maxWordLen);
  16. mlt.setStopWords(stopWords);
  17. mlt.setBoost(boostTerms);
  18. mlt.setBoostFactor(boostTermsFactor);
  19. if (this.unlikeText != null || this.unlikeFields != null) {
  20. handleUnlike(mlt, this.unlikeText, this.unlikeFields);
  21. }
  22. return createQuery(mlt);
  23. }

相关文章