コード例 #1
0
ファイル: DistanceQuery.cs プロジェクト: voquanghoa/YAFNET
        public virtual Search.Query GetSpanNearQuery(
            IndexReader reader,
            string fieldName,
            float boost,
            BasicQueryFactory qf)
        {
            SpanQuery[] spanClauses = new SpanQuery[NrSubQueries];
            var         sqi         = GetSubQueriesEnumerator();
            int         qi          = 0;

            while (sqi.MoveNext())
            {
                SpanNearClauseFactory sncf = new SpanNearClauseFactory(reader, fieldName, qf);

                ((IDistanceSubQuery)sqi.Current).AddSpanQueries(sncf);
                if (sncf.Count == 0)
                {     /* distance operator requires all sub queries */
                    while (sqi.MoveNext())
                    { /* produce evt. error messages but ignore results */
                        ((IDistanceSubQuery)sqi.Current).AddSpanQueries(sncf);
                        sncf.Clear();
                    }
                    return(SrndQuery.TheEmptyLcnQuery);
                }

                spanClauses[qi] = sncf.MakeSpanClause();
                qi++;
            }
            SpanNearQuery r = new SpanNearQuery(spanClauses, OpDistance - 1, QueriesOrdered);

            r.Boost = boost;
            return(r);
        }
コード例 #2
0
 public SpanNearClauseFactory(IndexReader reader, string fieldName, BasicQueryFactory qf)
 {
     this.reader            = reader;
     this.fieldName         = fieldName;
     this.weightBySpanQuery = new JCG.Dictionary <SpanQuery, float>();
     this.qf = qf;
 }
コード例 #3
0
 public SimpleTermRewriteQuery(
     SimpleTerm srndQuery,
     string fieldName,
     BasicQueryFactory qf)
     : base(srndQuery, fieldName, qf)
 {
 }
コード例 #4
0
 public RewriteQuery(
     SQ srndQuery,
     string fieldName,
     BasicQueryFactory qf)
 {
     this.m_srndQuery = srndQuery;
     this.m_fieldName = fieldName;
     this.m_qf        = qf;
 }
コード例 #5
0
ファイル: SrndQuery.cs プロジェクト: voquanghoa/YAFNET
 public virtual Search.Query MakeLuceneQueryField(string fieldName, BasicQueryFactory qf)
 {
     Search.Query q = MakeLuceneQueryFieldNoBoost(fieldName, qf);
     if (IsWeighted)
     {
         q.Boost = (Weight * q.Boost); /* weight may be at any level in a SrndQuery */
     }
     return(q);
 }
コード例 #6
0
ファイル: BasicQueryFactory.cs プロジェクト: wow64bb/YAFNET
        /// <summary>
        /// Two BasicQueryFactory's are equal when they generate
        /// the same types of basic queries, or both cannot generate queries anymore.
        /// </summary>
        public override bool Equals(object obj)
        {
            if (!(obj is BasicQueryFactory))
            {
                return(false);
            }
            BasicQueryFactory other = (BasicQueryFactory)obj;

            return(AtMax == other.AtMax);
        }
コード例 #7
0
        public virtual bool IsOperatorInfix => operatorInfix; /* else prefix operator */

        public virtual IList <Search.Query> MakeLuceneSubQueriesField(string fn, BasicQueryFactory qf)
        {
            List <Search.Query>     luceneSubQueries = new List <Search.Query>();
            IEnumerator <SrndQuery> sqi = GetSubQueriesEnumerator();

            while (sqi.MoveNext())
            {
                luceneSubQueries.Add((sqi.Current).MakeLuceneQueryField(fn, qf));
            }
            return(luceneSubQueries);
        }
コード例 #8
0
ファイル: NotQuery.cs プロジェクト: voquanghoa/YAFNET
        public override Search.Query MakeLuceneQueryFieldNoBoost(string fieldName, BasicQueryFactory qf)
        {
            var          luceneSubQueries = MakeLuceneSubQueriesField(fieldName, qf);
            BooleanQuery bq = new BooleanQuery();

            bq.Add(luceneSubQueries.FirstOrDefault(), 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
                                                 Occur.MUST_NOT);
            return(bq);
        }
コード例 #9
0
ファイル: NotQuery.cs プロジェクト: YAFNET/YAFNET
        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);
        }
コード例 #10
0
ファイル: FieldsQuery.cs プロジェクト: voquanghoa/YAFNET
 public virtual Search.Query MakeLuceneQueryNoBoost(BasicQueryFactory qf)
 {
     if (fieldNames.Count == 1)
     { /* single field name: no new queries needed */
         return(q.MakeLuceneQueryFieldNoBoost(fieldNames.FirstOrDefault(), qf));
     }
     else
     { /* OR query over the fields */
         List <SrndQuery> queries = new List <SrndQuery>();
         foreach (var fieldName in fieldNames)
         {
             var qc = (SrndQuery)q.Clone();
             queries.Add(new FieldsQuery(qc, fieldName, fieldOp));
         }
         OrQuery oq = new OrQuery(queries,
                                  true /* infix OR for field names */,
                                  orOperatorName);
         // System.out.println(getClass().toString() + ", fields expanded: " + oq.toString()); /* needs testing */
         return(oq.MakeLuceneQueryField(null, qf));
     }
 }
コード例 #11
0
ファイル: NotQuery.cs プロジェクト: wow64bb/YAFNET
        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);
        }
コード例 #12
0
ファイル: FieldsQuery.cs プロジェクト: voquanghoa/YAFNET
 public override Search.Query MakeLuceneQueryFieldNoBoost(string fieldName, BasicQueryFactory qf)
 {
     return(MakeLuceneQueryNoBoost(qf)); /* use this.fieldNames instead of fieldName */
 }
コード例 #13
0
ファイル: SimpleTerm.cs プロジェクト: ugurmutlucan15/YAFNET
 public override Search.Query MakeLuceneQueryFieldNoBoost(string fieldName, BasicQueryFactory qf)
 {
     return(new SimpleTermRewriteQuery(this, fieldName, qf));
 }
コード例 #14
0
ファイル: SrndQuery.cs プロジェクト: voquanghoa/YAFNET
 public abstract Search.Query MakeLuceneQueryFieldNoBoost(string fieldName, BasicQueryFactory qf);
コード例 #15
0
 public override Search.Query MakeLuceneQueryFieldNoBoost(string fieldName, BasicQueryFactory qf)
 {
     return(SrndBooleanQuery.MakeBooleanQuery( /* subqueries can be individually boosted */
                MakeLuceneSubQueriesField(fieldName, qf), Occur.MUST));
 }
コード例 #16
0
 public SimpleTermRewriteMatchingTermVisitor(IList <Search.Query> luceneSubQueries, BasicQueryFactory qf)
 {
     this.luceneSubQueries = luceneSubQueries;
     this.qf = qf;
 }