Rewrite() public method

Expert: called to re-write queries into primitive queries. For example, a PrefixQuery will be rewritten into a BooleanQuery that consists of TermQuerys.
public Rewrite ( IndexReader reader ) : Query
reader IndexReader
return Query
		public string GetHighlight(string value, IndexSearcher searcher, string highlightField, Query luceneQuery)
		{
			var scorer = new QueryScorer(luceneQuery.Rewrite(searcher.GetIndexReader()));
			var highlighter = new Highlighter(HighlightFormatter, scorer);

			var tokenStream = HighlightAnalyzer.TokenStream(highlightField, new StringReader(value));
			return highlighter.GetBestFragments(tokenStream, value, MaxNumHighlights, Separator);
		}
Beispiel #2
0
        public override Query Rewrite(IndexReader reader)
        {
            Query rewritten = @in.Rewrite(reader);

            if (rewritten == @in)
            {
                return(this);
            }
            else
            {
                return(Wrap(new Random(Random.Next()), rewritten));
            }
        }
Beispiel #3
0
        public override Query Rewrite(IndexReader reader)
        {
            Query rewritten = @in.Rewrite(reader);

            if (rewritten == @in)
            {
                return(this);
            }
            else
            {
                return(Wrap(new J2N.Randomizer(random.NextInt64()), rewritten));
            }
        }
Beispiel #4
0
        /// <summary>Rewrites the wrapped query. </summary>
        public override Query Rewrite(IndexReader reader)
        {
            Query rewritten = query.Rewrite(reader);

            if (rewritten != query)
            {
                FilteredQuery clone = (FilteredQuery)this.Clone();
                clone.query = rewritten;
                return(clone);
            }
            else
            {
                return(this);
            }
        }
Beispiel #5
0
        /// <summary>Optimize our representation and our subqueries representations</summary>
        /// <param name="reader">the IndexReader we query
        /// </param>
        /// <returns> an optimized copy of us (which may not be a copy if there is nothing to optimize)
        /// </returns>
        public override Query Rewrite(IndexReader reader)
        {
            int numDisjunctions = disjuncts.Count;

            if (numDisjunctions == 1)
            {
                Query singleton = (Query)disjuncts[0];
                Query result    = singleton.Rewrite(reader);
                if (GetBoost() != 1.0f)
                {
                    if (result == singleton)
                    {
                        result = (Query)result.Clone();
                    }
                    result.SetBoost(GetBoost() * result.GetBoost());
                }
                return(result);
            }
            DisjunctionMaxQuery clone = null;

            for (int i = 0; i < numDisjunctions; i++)
            {
                Query clause  = (Query)disjuncts[i];
                Query rewrite = clause.Rewrite(reader);
                if (rewrite != clause)
                {
                    if (clone == null)
                    {
                        clone = (DisjunctionMaxQuery)this.Clone();
                    }
                    clone.disjuncts[i] = rewrite;
                }
            }
            if (clone != null)
            {
                return(clone);
            }
            else
            {
                return(this);
            }
        }