org.apache.lucene.search.Query#rewrite ( )源码实例Demo

下面列出了org.apache.lucene.search.Query#rewrite ( ) 实例代码,或者点击链接到github查看源代码,也可以在右侧发表评论。

源代码1 项目: lucene-solr   文件: FieldQuery.java
void saveTerms( Collection<Query> flatQueries, IndexReader reader ) throws IOException{
  for( Query query : flatQueries ){
    while (query instanceof BoostQuery) {
      query = ((BoostQuery) query).getQuery();
    }
    Set<String> termSet = getTermSet( query );
    if( query instanceof TermQuery )
      termSet.add( ((TermQuery)query).getTerm().text() );
    else if( query instanceof PhraseQuery ){
      for( Term term : ((PhraseQuery)query).getTerms() )
        termSet.add( term.text() );
    }
    else if (query instanceof MultiTermQuery && reader != null) {
      BooleanQuery mtqTerms = (BooleanQuery) query.rewrite(reader);
      for (BooleanClause clause : mtqTerms) {
        termSet.add (((TermQuery) clause.getQuery()).getTerm().text());
      }
    }
    else
      throw new RuntimeException( "query \"" + query.toString() + "\" must be flatten first." );
  }
}
 
源代码2 项目: lucene-solr   文件: SearchImpl.java
@Override
public Query parseQuery(String expression, String defField, Analyzer analyzer,
                        QueryParserConfig config, boolean rewrite) {
  Objects.requireNonNull(expression);
  Objects.requireNonNull(defField);
  Objects.requireNonNull(analyzer);
  Objects.requireNonNull(config);

  Query query = config.isUseClassicParser() ?
      parseByClassicParser(expression, defField, analyzer, config) :
      parseByStandardParser(expression, defField, analyzer, config);

  if (rewrite) {
    try {
      query = query.rewrite(reader);
    } catch (IOException e) {
      throw new LukeException(String.format(Locale.ENGLISH, "Failed to rewrite query: %s", query.toString()), e);
    }
  }

  return query;
}
 
源代码3 项目: lucene-solr   文件: DrillSidewaysQuery.java
@Override
public Query rewrite(IndexReader reader) throws IOException {
  Query newQuery = baseQuery;
  while(true) {
    Query rewrittenQuery = newQuery.rewrite(reader);
    if (rewrittenQuery == newQuery) {
      break;
    }
    newQuery = rewrittenQuery;
  }
  if (newQuery == baseQuery) {
    return super.rewrite(reader);
  } else {
    return new DrillSidewaysQuery(newQuery, drillDownCollector, drillSidewaysCollectors, drillDownQueries, scoreSubDocsAtOnce);
  }
}
 
源代码4 项目: lucene-solr   文件: HighlighterTest.java
public void doSearching(Query unReWrittenQuery) throws Exception {
  searcher = newSearcher(reader);
  // for any multi-term queries to work (prefix, wildcard, range,fuzzy etc)
  // you must use a rewritten query!
  query = unReWrittenQuery.rewrite(reader);
  if (VERBOSE) System.out.println("Searching for: " + query.toString(FIELD_NAME));
  hits = searcher.search(query, 1000);
}
 
@Override
public Query rewrite(IndexReader reader) throws IOException {
    List<Query> rewrittenQueries = new ArrayList<>(queries.size());
    boolean rewritten = false;
    for (Query query : queries) {
        Query rewrittenQuery = query.rewrite(reader);
        rewritten |= rewrittenQuery != query;
        rewrittenQueries.add(rewrittenQuery);
    }
    return rewritten ? new RankerQuery(rewrittenQueries, features, ranker) : this;
}
 
源代码6 项目: lucene-solr   文件: TestCoreParser.java
protected Query rewrite(Query q) throws IOException {
  return q.rewrite(reader());
}