public override Search.Query Rewrite(IndexReader reader)
        {
            var luceneSubQueries = new List <Search.Query>();

            srndQuery.VisitMatchingTerms(reader, fieldName,
                                         new SimpleTermRewriteMatchingTermVisitor(luceneSubQueries, qf));
            return((luceneSubQueries.Count == 0) ? SrndQuery.TheEmptyLcnQuery
                : (luceneSubQueries.Count == 1) ? luceneSubQueries.First()
                : SrndBooleanQuery.MakeBooleanQuery(
                       /* luceneSubQueries all have default weight */
                       luceneSubQueries, BooleanClause.Occur.SHOULD)); /* OR the subquery terms */
        }
Ejemplo n.º 2
0
        public override Search.Query MakeLuceneQueryFieldNoBoost(string fieldName, BasicQueryFactory qf)
        {
            var          luceneSubQueries = MakeLuceneSubQueriesField(fieldName, qf);
            BooleanQuery bq = new BooleanQuery();

            bq.Add(luceneSubQueries.FirstOrDefault(), BooleanClause.Occur.MUST);
            SrndBooleanQuery.AddQueriesToBoolean(bq,
                                                 // FIXME: do not allow weights on prohibited subqueries.
                                                 //luceneSubQueries.subList(1, luceneSubQueries.size()),
                                                 luceneSubQueries.Skip(1).ToList(),
                                                 // later subqueries: not required, prohibited
                                                 BooleanClause.Occur.MUST_NOT);
            return(bq);
        }
Ejemplo n.º 3
0
        public override Search.Query MakeLuceneQueryFieldNoBoost(string fieldName, BasicQueryFactory qf)
        {
            var          luceneSubQueries = MakeLuceneSubQueriesField(fieldName, qf);
            BooleanQuery bq = new BooleanQuery
            {
                { luceneSubQueries.Count > 0 ? luceneSubQueries[0] : null, Occur.MUST }
            };

            SrndBooleanQuery.AddQueriesToBoolean(bq,
                                                                                                          // FIXME: do not allow weights on prohibited subqueries.
                                                 luceneSubQueries.GetView(1, luceneSubQueries.Count - 1), // LUCENENET: Converted end index to length
                                                                                                          // later subqueries: not required, prohibited
                                                 Occur.MUST_NOT);
            return(bq);
        }
Ejemplo n.º 4
0
        public override Search.Query MakeLuceneQueryFieldNoBoost(string fieldName, BasicQueryFactory qf)
        {
            var          luceneSubQueries = MakeLuceneSubQueriesField(fieldName, qf);
            BooleanQuery bq = new BooleanQuery
            {
                { luceneSubQueries.Count > 0 ? luceneSubQueries[0] : null, Occur.MUST }
            };

            // LUCENENET: SubList() is slow, so we do an array copy operation instead
            var luceneSubQueriesArray = new Search.Query[luceneSubQueries.Count - 1];

            for (int i = 1, j = 0; i < luceneSubQueries.Count; i++, j++)
            {
                luceneSubQueriesArray[j] = luceneSubQueries[i];
            }

            SrndBooleanQuery.AddQueriesToBoolean(bq,
                                                 // FIXME: do not allow weights on prohibited subqueries.
                                                 luceneSubQueriesArray,
                                                 // later subqueries: not required, prohibited
                                                 Occur.MUST_NOT);
            return(bq);
        }
Ejemplo n.º 5
0
 public override Search.Query MakeLuceneQueryFieldNoBoost(string fieldName, BasicQueryFactory qf)
 {
     return(SrndBooleanQuery.MakeBooleanQuery( /* subqueries can be individually boosted */
                MakeLuceneSubQueriesField(fieldName, qf), BooleanClause.Occur.MUST));
 }