You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@lucenenet.apache.org by sy...@apache.org on 2016/09/11 21:31:02 UTC
[31/50] [abbrv] lucenenet git commit: Moved Lucene.Net.QueryParser
and Lucene.Net.Tests.QueryParser projects into src\ directory.
http://git-wip-us.apache.org/repos/asf/lucenenet/blob/679ad24c/Lucene.Net.QueryParser/Surround/Query/ComposedQuery.cs
----------------------------------------------------------------------
diff --git a/Lucene.Net.QueryParser/Surround/Query/ComposedQuery.cs b/Lucene.Net.QueryParser/Surround/Query/ComposedQuery.cs
deleted file mode 100644
index d421ad6..0000000
--- a/Lucene.Net.QueryParser/Surround/Query/ComposedQuery.cs
+++ /dev/null
@@ -1,144 +0,0 @@
-\ufeffusing System;
-using System.Collections.Generic;
-using System.Linq;
-using System.Text;
-
-namespace Lucene.Net.QueryParser.Surround.Query
-{
- /*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
- /// <summary>
- /// Base class for composite queries (such as AND/OR/NOT)
- /// </summary>
- public abstract class ComposedQuery : SrndQuery
- {
- public ComposedQuery(IEnumerable<SrndQuery> qs, bool operatorInfix, string opName)
- {
- Recompose(qs);
- this.operatorInfix = operatorInfix;
- this.opName = opName;
- }
-
- protected virtual void Recompose(IEnumerable<SrndQuery> queries)
- {
- if (queries.Count() < 2) throw new InvalidOperationException("Too few subqueries");
- this.queries = new List<SrndQuery>(queries);
- }
-
- protected string opName;
- public virtual string OperatorName { get { return opName; } }
-
- protected IList<SrndQuery> queries;
-
- public virtual IEnumerator<SrndQuery> GetSubQueriesEnumerator()
- {
- return queries.GetEnumerator();
- }
-
- public virtual int NrSubQueries { get { return queries.Count; } }
-
- public virtual SrndQuery GetSubQuery(int qn) { return queries[qn]; }
-
- private bool operatorInfix;
- public virtual bool IsOperatorInfix { get { return operatorInfix; } } /* else prefix operator */
-
- public IEnumerable<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;
- }
-
- public override string ToString()
- {
- StringBuilder r = new StringBuilder();
- if (IsOperatorInfix)
- {
- InfixToString(r);
- }
- else
- {
- PrefixToString(r);
- }
- WeightToString(r);
- return r.ToString();
- }
-
- // Override for different spacing
- protected virtual string PrefixSeparator { get { return ", "; } }
- protected virtual string BracketOpen { get { return "("; } }
- protected virtual string BracketClose { get { return ")"; } }
-
- protected virtual void InfixToString(StringBuilder r)
- {
- /* Brackets are possibly redundant in the result. */
- IEnumerator<SrndQuery> sqi = GetSubQueriesEnumerator();
- r.Append(BracketOpen);
- if (sqi.MoveNext())
- {
- r.Append(sqi.Current.ToString());
- while (sqi.MoveNext())
- {
- r.Append(" ");
- r.Append(OperatorName); /* infix operator */
- r.Append(" ");
- r.Append(sqi.Current.ToString());
- }
- }
- r.Append(BracketClose);
- }
-
- protected virtual void PrefixToString(StringBuilder r)
- {
- IEnumerator<SrndQuery> sqi = GetSubQueriesEnumerator();
- r.Append(OperatorName); /* prefix operator */
- r.Append(BracketOpen);
- if (sqi.MoveNext())
- {
- r.Append(sqi.Current.ToString());
- while (sqi.MoveNext())
- {
- r.Append(PrefixSeparator);
- r.Append(sqi.Current.ToString());
- }
- }
- r.Append(BracketClose);
- }
-
- public override bool IsFieldsSubQueryAcceptable
- {
- get
- {
- /* at least one subquery should be acceptable */
- IEnumerator<SrndQuery> sqi = GetSubQueriesEnumerator();
- while (sqi.MoveNext())
- {
- if ((sqi.Current).IsFieldsSubQueryAcceptable)
- {
- return true;
- }
- }
- return false;
- }
- }
- }
-}
http://git-wip-us.apache.org/repos/asf/lucenenet/blob/679ad24c/Lucene.Net.QueryParser/Surround/Query/DistanceQuery.cs
----------------------------------------------------------------------
diff --git a/Lucene.Net.QueryParser/Surround/Query/DistanceQuery.cs b/Lucene.Net.QueryParser/Surround/Query/DistanceQuery.cs
deleted file mode 100644
index 1ca7a01..0000000
--- a/Lucene.Net.QueryParser/Surround/Query/DistanceQuery.cs
+++ /dev/null
@@ -1,117 +0,0 @@
-\ufeffusing Lucene.Net.Index;
-using Lucene.Net.Search.Spans;
-using System;
-using System.Collections.Generic;
-
-namespace Lucene.Net.QueryParser.Surround.Query
-{
- /*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
- /// <summary>
- /// Factory for NEAR queries
- /// </summary>
- public class DistanceQuery : ComposedQuery, IDistanceSubQuery
- {
- public DistanceQuery(
- IEnumerable<SrndQuery> queries,
- bool infix,
- int opDistance,
- string opName,
- bool ordered)
- : base(queries, infix, opName)
- {
- this.opDistance = opDistance; /* the distance indicated in the operator */
- this.ordered = ordered;
- }
-
- private int opDistance;
- public virtual int OpDistance { get { return opDistance; } }
-
- private bool ordered;
- public virtual bool QueriesOrdered { get { return ordered; } }
-
-
- public virtual string DistanceSubQueryNotAllowed()
- {
- var sqi = GetSubQueriesEnumerator();
- while (sqi.MoveNext())
- {
- var dsq = sqi.Current as IDistanceSubQuery;
- if (dsq != null)
- {
- string m = dsq.DistanceSubQueryNotAllowed();
- if (m != null)
- {
- return m;
- }
- }
- else
- {
- return "Operator " + OperatorName + " does not allow subquery " + dsq.ToString();
- }
- }
- return null; /* subqueries acceptable */
- }
-
- public virtual void AddSpanQueries(SpanNearClauseFactory sncf)
- {
- Search.Query snq = GetSpanNearQuery(sncf.IndexReader,
- sncf.FieldName,
- Weight,
- sncf.BasicQueryFactory);
- sncf.AddSpanQuery(snq);
- }
-
- public 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;
- }
-
- public override Search.Query MakeLuceneQueryFieldNoBoost(string fieldName, BasicQueryFactory qf)
- {
- return new DistanceRewriteQuery(this, fieldName, qf);
- }
- }
-}
http://git-wip-us.apache.org/repos/asf/lucenenet/blob/679ad24c/Lucene.Net.QueryParser/Surround/Query/DistanceRewriteQuery.cs
----------------------------------------------------------------------
diff --git a/Lucene.Net.QueryParser/Surround/Query/DistanceRewriteQuery.cs b/Lucene.Net.QueryParser/Surround/Query/DistanceRewriteQuery.cs
deleted file mode 100644
index 3d3a108..0000000
--- a/Lucene.Net.QueryParser/Surround/Query/DistanceRewriteQuery.cs
+++ /dev/null
@@ -1,35 +0,0 @@
-\ufeffnamespace Lucene.Net.QueryParser.Surround.Query
-{
- /*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
- internal class DistanceRewriteQuery : RewriteQuery<DistanceQuery>
- {
- public DistanceRewriteQuery(
- DistanceQuery srndQuery,
- string fieldName,
- BasicQueryFactory qf)
- : base(srndQuery, fieldName, qf)
- {
- }
-
- public override Search.Query Rewrite(Index.IndexReader reader)
- {
- return srndQuery.GetSpanNearQuery(reader, fieldName, Boost, qf);
- }
- }
-}
http://git-wip-us.apache.org/repos/asf/lucenenet/blob/679ad24c/Lucene.Net.QueryParser/Surround/Query/DistanceSubQuery.cs
----------------------------------------------------------------------
diff --git a/Lucene.Net.QueryParser/Surround/Query/DistanceSubQuery.cs b/Lucene.Net.QueryParser/Surround/Query/DistanceSubQuery.cs
deleted file mode 100644
index 639f9e0..0000000
--- a/Lucene.Net.QueryParser/Surround/Query/DistanceSubQuery.cs
+++ /dev/null
@@ -1,36 +0,0 @@
-\ufeffnamespace Lucene.Net.QueryParser.Surround.Query
-{
- /*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
- /// <summary>
- /// Interface for queries that can be nested as subqueries
- /// into a span near.
- /// </summary>
- public interface IDistanceSubQuery
- {
- /// <summary>
- /// When distanceSubQueryNotAllowed() returns non null, the reason why the subquery
- /// is not allowed as a distance subquery is returned.
- /// <br>When distanceSubQueryNotAllowed() returns null addSpanNearQueries() can be used
- /// in the creation of the span near clause for the subquery.
- /// </summary>
- string DistanceSubQueryNotAllowed();
-
- void AddSpanQueries(SpanNearClauseFactory sncf);
- }
-}
http://git-wip-us.apache.org/repos/asf/lucenenet/blob/679ad24c/Lucene.Net.QueryParser/Surround/Query/FieldsQuery.cs
----------------------------------------------------------------------
diff --git a/Lucene.Net.QueryParser/Surround/Query/FieldsQuery.cs b/Lucene.Net.QueryParser/Surround/Query/FieldsQuery.cs
deleted file mode 100644
index 912bf36..0000000
--- a/Lucene.Net.QueryParser/Surround/Query/FieldsQuery.cs
+++ /dev/null
@@ -1,105 +0,0 @@
-\ufeffusing System.Collections.Generic;
-using System.Linq;
-using System.Text;
-
-namespace Lucene.Net.QueryParser.Surround.Query
-{
- /*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
- /// <summary>
- /// Forms an OR query of the provided query across multiple fields.
- /// </summary>
- public class FieldsQuery : SrndQuery /* mostly untested */
- {
- private SrndQuery q;
- private IEnumerable<string> fieldNames;
- private readonly char fieldOp;
- private readonly string OrOperatorName = "OR"; /* for expanded queries, not normally visible */
-
- public FieldsQuery(SrndQuery q, IEnumerable<string> fieldNames, char fieldOp)
- {
- this.q = q;
- this.fieldNames = new List<string>(fieldNames);
- this.fieldOp = fieldOp;
- }
-
- public FieldsQuery(SrndQuery q, string fieldName, char fieldOp)
- {
- this.q = q;
- var fieldNameList = new List<string>();
- fieldNameList.Add(fieldName);
- this.fieldNames = fieldNameList;
- this.fieldOp = fieldOp;
- }
-
- public override bool IsFieldsSubQueryAcceptable
- {
- get { return false; }
- }
-
- public 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);
- }
- }
-
- public override Search.Query MakeLuceneQueryFieldNoBoost(string fieldName, BasicQueryFactory qf)
- {
- return MakeLuceneQueryNoBoost(qf); /* use this.fieldNames instead of fieldName */
- }
-
- public virtual IEnumerable<string> FieldNames { get { return fieldNames; } }
-
- public virtual char FieldOperator { get { return fieldOp; } }
-
- public override string ToString()
- {
- StringBuilder r = new StringBuilder();
- r.Append("(");
- FieldNamesToString(r);
- r.Append(q.ToString());
- r.Append(")");
- return r.ToString();
- }
-
- protected virtual void FieldNamesToString(StringBuilder r)
- {
- foreach (var fieldName in FieldNames)
- {
- r.Append(fieldName);
- r.Append(FieldOperator);
- }
- }
- }
-}
http://git-wip-us.apache.org/repos/asf/lucenenet/blob/679ad24c/Lucene.Net.QueryParser/Surround/Query/NotQuery.cs
----------------------------------------------------------------------
diff --git a/Lucene.Net.QueryParser/Surround/Query/NotQuery.cs b/Lucene.Net.QueryParser/Surround/Query/NotQuery.cs
deleted file mode 100644
index 30d40a8..0000000
--- a/Lucene.Net.QueryParser/Surround/Query/NotQuery.cs
+++ /dev/null
@@ -1,48 +0,0 @@
-\ufeffusing Lucene.Net.Search;
-using System.Collections.Generic;
-using System.Linq;
-
-namespace Lucene.Net.QueryParser.Surround.Query
-{
- /*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
- /// <summary>
- /// Factory for prohibited clauses
- /// </summary>
- public class NotQuery : ComposedQuery
- {
- public NotQuery(IEnumerable<SrndQuery> queries, string opName)
- : base(queries, true /* infix */, opName)
- {
- }
-
- 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;
- }
- }
-}
http://git-wip-us.apache.org/repos/asf/lucenenet/blob/679ad24c/Lucene.Net.QueryParser/Surround/Query/OrQuery.cs
----------------------------------------------------------------------
diff --git a/Lucene.Net.QueryParser/Surround/Query/OrQuery.cs b/Lucene.Net.QueryParser/Surround/Query/OrQuery.cs
deleted file mode 100644
index f7d0036..0000000
--- a/Lucene.Net.QueryParser/Surround/Query/OrQuery.cs
+++ /dev/null
@@ -1,71 +0,0 @@
-\ufeffusing Lucene.Net.Search;
-using System.Collections.Generic;
-
-namespace Lucene.Net.QueryParser.Surround.Query
-{
- /*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
- /// <summary>
- /// Factory for disjunctions
- /// </summary>
- public class OrQuery : ComposedQuery, IDistanceSubQuery
- {
- public OrQuery(IEnumerable<SrndQuery> queries, bool infix, string opName)
- : base(queries, infix, opName)
- {
- }
-
- public override Search.Query MakeLuceneQueryFieldNoBoost(string fieldName, BasicQueryFactory qf)
- {
- return SrndBooleanQuery.MakeBooleanQuery(
- /* subqueries can be individually boosted */
- MakeLuceneSubQueriesField(fieldName, qf), BooleanClause.Occur.SHOULD);
- }
-
- public virtual string DistanceSubQueryNotAllowed()
- {
- var sqi = GetSubQueriesEnumerator();
- while (sqi.MoveNext())
- {
- SrndQuery leq = sqi.Current;
- if (leq is IDistanceSubQuery)
- {
- string m = ((IDistanceSubQuery)leq).DistanceSubQueryNotAllowed();
- if (m != null)
- {
- return m;
- }
- }
- else
- {
- return "subquery not allowed: " + leq.ToString();
- }
- }
- return null;
- }
-
- public virtual void AddSpanQueries(SpanNearClauseFactory sncf)
- {
- var sqi = GetSubQueriesEnumerator();
- while (sqi.MoveNext())
- {
- ((IDistanceSubQuery)sqi.Current).AddSpanQueries(sncf);
- }
- }
- }
-}
http://git-wip-us.apache.org/repos/asf/lucenenet/blob/679ad24c/Lucene.Net.QueryParser/Surround/Query/RewriteQuery.cs
----------------------------------------------------------------------
diff --git a/Lucene.Net.QueryParser/Surround/Query/RewriteQuery.cs b/Lucene.Net.QueryParser/Surround/Query/RewriteQuery.cs
deleted file mode 100644
index 030923f..0000000
--- a/Lucene.Net.QueryParser/Surround/Query/RewriteQuery.cs
+++ /dev/null
@@ -1,85 +0,0 @@
-\ufeffusing Lucene.Net.Index;
-using System;
-
-namespace Lucene.Net.QueryParser.Surround.Query
-{
- /*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
- public abstract class RewriteQuery<SQ> : Search.Query
- {
- protected readonly SQ srndQuery;
- protected readonly string fieldName;
- protected readonly BasicQueryFactory qf;
-
- public RewriteQuery(
- SQ srndQuery,
- String fieldName,
- BasicQueryFactory qf)
- {
- this.srndQuery = srndQuery;
- this.fieldName = fieldName;
- this.qf = qf;
- }
-
- public abstract override Search.Query Rewrite(IndexReader reader);
-
- public override string ToString()
- {
- return ToString(null);
- }
-
- public override string ToString(string field)
- {
- return GetType().Name
- + (field == null ? "" : "(unused: " + field + ")")
- + "(" + fieldName
- + ", " + srndQuery.ToString()
- + ", " + qf.ToString()
- + ")";
- }
-
- public override int GetHashCode()
- {
- return GetType().GetHashCode()
- ^ fieldName.GetHashCode()
- ^ qf.GetHashCode()
- ^ srndQuery.GetHashCode();
- }
-
- public override bool Equals(object obj)
- {
- if (obj == null)
- return false;
- if (!GetType().Equals(obj.GetType()))
- return false;
- RewriteQuery<SQ> other = (RewriteQuery<SQ>)obj;
- return fieldName.Equals(other.fieldName)
- && qf.Equals(other.qf)
- && srndQuery.Equals(other.srndQuery);
- }
-
- /// <summary>
- /// Not supported by this query.
- /// </summary>
- /// <exception cref="NotSupportedException">throws NotSupportedException always: clone is not supported.</exception>
- public override object Clone()
- {
- throw new NotSupportedException();
- }
- }
-}
http://git-wip-us.apache.org/repos/asf/lucenenet/blob/679ad24c/Lucene.Net.QueryParser/Surround/Query/SimpleTerm.cs
----------------------------------------------------------------------
diff --git a/Lucene.Net.QueryParser/Surround/Query/SimpleTerm.cs b/Lucene.Net.QueryParser/Surround/Query/SimpleTerm.cs
deleted file mode 100644
index 5e39e03..0000000
--- a/Lucene.Net.QueryParser/Surround/Query/SimpleTerm.cs
+++ /dev/null
@@ -1,118 +0,0 @@
-\ufeffusing Lucene.Net.Index;
-using System;
-using System.Text;
-
-namespace Lucene.Net.QueryParser.Surround.Query
-{
- /*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
- /// <summary>
- /// Base class for queries that expand to sets of simple terms.
- /// </summary>
- public abstract class SimpleTerm : SrndQuery, IDistanceSubQuery, IComparable<SimpleTerm>
- {
- public SimpleTerm(bool q)
- {
- quoted = q;
- }
-
- private bool quoted;
- internal bool IsQuoted { get { return quoted; } }
-
- public virtual string Quote { get { return "\""; }}
- public virtual string FieldOperator { get { return "/"; } }
-
- public abstract string ToStringUnquoted();
-
- [Obsolete("deprecated (March 2011) Not normally used, to be removed from Lucene 4.0. This class implementing Comparable is to be removed at the same time.")]
- public int CompareTo(SimpleTerm ost)
- {
- /* for ordering terms and prefixes before using an index, not used */
- return this.ToStringUnquoted().CompareTo(ost.ToStringUnquoted());
- }
-
- protected virtual void SuffixToString(StringBuilder r) { } /* override for prefix query */
-
-
- public override string ToString()
- {
- StringBuilder r = new StringBuilder();
- if (IsQuoted)
- {
- r.Append(Quote);
- }
- r.Append(ToStringUnquoted());
- if (IsQuoted)
- {
- r.Append(Quote);
- }
- SuffixToString(r);
- WeightToString(r);
- return r.ToString();
- }
-
- public abstract void VisitMatchingTerms(
- IndexReader reader,
- string fieldName,
- IMatchingTermVisitor mtv);
-
- /// <summary>
- /// Callback to visit each matching term during "rewrite"
- /// in <see cref="M:VisitMatchingTerm(Term)"/>
- /// </summary>
- public interface IMatchingTermVisitor
- {
- void VisitMatchingTerm(Term t);
- }
-
- public string DistanceSubQueryNotAllowed()
- {
- return null;
- }
-
- public void AddSpanQueries(SpanNearClauseFactory sncf)
- {
- VisitMatchingTerms(
- sncf.IndexReader,
- sncf.FieldName,
- new AddSpanQueriesMatchingTermVisitor(sncf, Weight));
- }
-
- internal class AddSpanQueriesMatchingTermVisitor : IMatchingTermVisitor
- {
- private readonly SpanNearClauseFactory sncf;
- private readonly float weight;
-
- public AddSpanQueriesMatchingTermVisitor(SpanNearClauseFactory sncf, float weight)
- {
- this.sncf = sncf;
- this.weight = weight;
- }
-
- public void VisitMatchingTerm(Term term)
- {
- sncf.AddTermWeighted(term, weight);
- }
- }
-
- public override Search.Query MakeLuceneQueryFieldNoBoost(string fieldName, BasicQueryFactory qf)
- {
- return new SimpleTermRewriteQuery(this, fieldName, qf);
- }
- }
-}
http://git-wip-us.apache.org/repos/asf/lucenenet/blob/679ad24c/Lucene.Net.QueryParser/Surround/Query/SimpleTermRewriteQuery.cs
----------------------------------------------------------------------
diff --git a/Lucene.Net.QueryParser/Surround/Query/SimpleTermRewriteQuery.cs b/Lucene.Net.QueryParser/Surround/Query/SimpleTermRewriteQuery.cs
deleted file mode 100644
index 6502d6c..0000000
--- a/Lucene.Net.QueryParser/Surround/Query/SimpleTermRewriteQuery.cs
+++ /dev/null
@@ -1,64 +0,0 @@
-\ufeffusing Lucene.Net.Index;
-using Lucene.Net.Search;
-using System.Collections.Generic;
-using System.Linq;
-
-namespace Lucene.Net.QueryParser.Surround.Query
-{
- /*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
- internal class SimpleTermRewriteQuery : RewriteQuery<SimpleTerm>
- {
- public SimpleTermRewriteQuery(
- SimpleTerm srndQuery,
- string fieldName,
- BasicQueryFactory qf)
- : base(srndQuery, fieldName, qf)
- {
- }
-
- 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 */
- }
-
- internal class SimpleTermRewriteMatchingTermVisitor : SimpleTerm.IMatchingTermVisitor
- {
- private readonly IList<Search.Query> luceneSubQueries;
- private readonly BasicQueryFactory qf;
-
- public SimpleTermRewriteMatchingTermVisitor(IList<Search.Query> luceneSubQueries, BasicQueryFactory qf)
- {
- this.luceneSubQueries = luceneSubQueries;
- this.qf = qf;
- }
-
- public void VisitMatchingTerm(Term term)
- {
- luceneSubQueries.Add(qf.NewTermQuery(term));
- }
- }
- }
-}
http://git-wip-us.apache.org/repos/asf/lucenenet/blob/679ad24c/Lucene.Net.QueryParser/Surround/Query/SpanNearClauseFactory.cs
----------------------------------------------------------------------
diff --git a/Lucene.Net.QueryParser/Surround/Query/SpanNearClauseFactory.cs b/Lucene.Net.QueryParser/Surround/Query/SpanNearClauseFactory.cs
deleted file mode 100644
index 6cddb9c..0000000
--- a/Lucene.Net.QueryParser/Surround/Query/SpanNearClauseFactory.cs
+++ /dev/null
@@ -1,93 +0,0 @@
-\ufeffusing Lucene.Net.Index;
-using Lucene.Net.Search.Spans;
-using Lucene.Net.Support;
-using System;
-using System.Collections.Generic;
-
-namespace Lucene.Net.QueryParser.Surround.Query
-{
- /*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
- /// <summary>
- /// Factory for <see cref="SpanOrQuery"/>
- /// </summary>
- public class SpanNearClauseFactory
- {
- public SpanNearClauseFactory(IndexReader reader, string fieldName, BasicQueryFactory qf) {
- this.reader = reader;
- this.fieldName = fieldName;
- this.weightBySpanQuery = new HashMap<SpanQuery, float>();
- this.qf = qf;
- }
-
- private IndexReader reader;
- private string fieldName;
- private IDictionary<SpanQuery, float> weightBySpanQuery;
- private BasicQueryFactory qf;
-
- public virtual IndexReader IndexReader { get { return reader; } }
-
- public virtual string FieldName { get { return fieldName; } }
-
- public virtual BasicQueryFactory BasicQueryFactory { get { return qf; } }
-
- public virtual int Count { get { return weightBySpanQuery.Count; } }
-
- public virtual void Clear() { weightBySpanQuery.Clear(); }
-
- protected virtual void AddSpanQueryWeighted(SpanQuery sq, float weight)
- {
- float w;
- if (weightBySpanQuery.ContainsKey(sq))
- w = weightBySpanQuery[sq] + weight;
- else
- w = weight;
- weightBySpanQuery[sq] = w;
- }
-
- public virtual void AddTermWeighted(Term t, float weight)
- {
- SpanTermQuery stq = qf.NewSpanTermQuery(t);
- /* CHECKME: wrap in Hashable...? */
- AddSpanQueryWeighted(stq, weight);
- }
-
- public virtual void AddSpanQuery(Search.Query q)
- {
- if (q == SrndQuery.TheEmptyLcnQuery)
- return;
- if (!(q is SpanQuery))
- throw new InvalidOperationException("Expected SpanQuery: " + q.ToString(FieldName));
- AddSpanQueryWeighted((SpanQuery)q, q.Boost);
- }
-
- public SpanQuery MakeSpanClause()
- {
- List<SpanQuery> spanQueries = new List<SpanQuery>();
- foreach (var wsq in weightBySpanQuery)
- {
- wsq.Key.Boost = wsq.Value;
- spanQueries.Add(wsq.Key);
- }
- if (spanQueries.Count == 1)
- return spanQueries[0];
- else
- return new SpanOrQuery(spanQueries.ToArray());
- }
- }
-}
http://git-wip-us.apache.org/repos/asf/lucenenet/blob/679ad24c/Lucene.Net.QueryParser/Surround/Query/SrndBooleanQuery.cs
----------------------------------------------------------------------
diff --git a/Lucene.Net.QueryParser/Surround/Query/SrndBooleanQuery.cs b/Lucene.Net.QueryParser/Surround/Query/SrndBooleanQuery.cs
deleted file mode 100644
index 7a1a8b3..0000000
--- a/Lucene.Net.QueryParser/Surround/Query/SrndBooleanQuery.cs
+++ /dev/null
@@ -1,51 +0,0 @@
-\ufeffusing Lucene.Net.Search;
-using System;
-using System.Collections.Generic;
-using System.Linq;
-
-namespace Lucene.Net.QueryParser.Surround.Query
-{
- /*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
- public static class SrndBooleanQuery
- {
- public static void AddQueriesToBoolean(
- BooleanQuery bq,
- IEnumerable<Search.Query> queries,
- BooleanClause.Occur occur)
- {
- foreach (var query in queries)
- {
- bq.Add(query, occur);
- }
- }
-
- public static Search.Query MakeBooleanQuery(
- IEnumerable<Search.Query> queries,
- BooleanClause.Occur occur)
- {
- if (queries.Count() <= 1)
- {
- throw new InvalidOperationException("Too few subqueries: " + queries.Count());
- }
- BooleanQuery bq = new BooleanQuery();
- AddQueriesToBoolean(bq, queries, occur);
- return bq;
- }
- }
-}
http://git-wip-us.apache.org/repos/asf/lucenenet/blob/679ad24c/Lucene.Net.QueryParser/Surround/Query/SrndPrefixQuery.cs
----------------------------------------------------------------------
diff --git a/Lucene.Net.QueryParser/Surround/Query/SrndPrefixQuery.cs b/Lucene.Net.QueryParser/Surround/Query/SrndPrefixQuery.cs
deleted file mode 100644
index 4044b09..0000000
--- a/Lucene.Net.QueryParser/Surround/Query/SrndPrefixQuery.cs
+++ /dev/null
@@ -1,108 +0,0 @@
-\ufeffusing Lucene.Net.Index;
-using Lucene.Net.Util;
-using System.Text;
-
-namespace Lucene.Net.QueryParser.Surround.Query
-{
- /*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
- /// <summary>
- /// Query that matches String prefixes
- /// </summary>
- public class SrndPrefixQuery : SimpleTerm
- {
- private readonly BytesRef prefixRef;
- public SrndPrefixQuery(string prefix, bool quoted, char truncator)
- : base(quoted)
- {
- this.prefix = prefix;
- prefixRef = new BytesRef(prefix);
- this.truncator = truncator;
- }
-
- private readonly string prefix;
- public virtual string Prefix { get { return prefix; } }
-
- private readonly char truncator;
- public virtual char SuffixOperator { get { return truncator; } }
-
- public virtual Term GetLucenePrefixTerm(string fieldName)
- {
- return new Term(fieldName, Prefix);
- }
-
- public override string ToStringUnquoted()
- {
- return Prefix;
- }
-
- protected override void SuffixToString(StringBuilder r)
- {
- r.Append(SuffixOperator);
- }
-
- public override void VisitMatchingTerms(IndexReader reader, string fieldName, IMatchingTermVisitor mtv)
- {
- /* inspired by PrefixQuery.rewrite(): */
- Terms terms = MultiFields.GetTerms(reader, fieldName);
- if (terms != null)
- {
- TermsEnum termsEnum = terms.Iterator(null);
-
- bool skip = false;
- TermsEnum.SeekStatus status = termsEnum.SeekCeil(new BytesRef(Prefix));
- if (status == TermsEnum.SeekStatus.FOUND)
- {
- mtv.VisitMatchingTerm(GetLucenePrefixTerm(fieldName));
- }
- else if (status == TermsEnum.SeekStatus.NOT_FOUND)
- {
- if (StringHelper.StartsWith(termsEnum.Term(), prefixRef))
- {
- mtv.VisitMatchingTerm(new Term(fieldName, termsEnum.Term().Utf8ToString()));
- }
- else
- {
- skip = true;
- }
- }
- else
- {
- // EOF
- skip = true;
- }
-
- if (!skip)
- {
- while (true)
- {
- BytesRef text = termsEnum.Next();
- if (text != null && StringHelper.StartsWith(text, prefixRef))
- {
- mtv.VisitMatchingTerm(new Term(fieldName, text.Utf8ToString()));
- }
- else
- {
- break;
- }
- }
- }
- }
- }
- }
-}
http://git-wip-us.apache.org/repos/asf/lucenenet/blob/679ad24c/Lucene.Net.QueryParser/Surround/Query/SrndQuery.cs
----------------------------------------------------------------------
diff --git a/Lucene.Net.QueryParser/Surround/Query/SrndQuery.cs b/Lucene.Net.QueryParser/Surround/Query/SrndQuery.cs
deleted file mode 100644
index 57b19cc..0000000
--- a/Lucene.Net.QueryParser/Surround/Query/SrndQuery.cs
+++ /dev/null
@@ -1,149 +0,0 @@
-\ufeffusing Lucene.Net.Search;
-using Lucene.Net.Support;
-using System;
-using System.Text;
-
-namespace Lucene.Net.QueryParser.Surround.Query
-{
- /*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
- /// <summary>
- /// Lowest level base class for surround queries
- /// </summary>
- public abstract class SrndQuery : ICloneable
- {
- //public SrndQuery() { }
-
- private float weight = (float)1.0;
- private bool weighted = false;
-
- public virtual bool IsWeighted { get { return weighted; } }
-
- public virtual float Weight
- {
- get { return weight; }
- set
- {
- weight = value; /* as parsed from the query text */
- weighted = true;
- }
- }
-
- public virtual string WeightString { get { return Number.ToString(Weight); } }
-
- public virtual string WeightOperator { get { return "^"; } }
-
-
- protected virtual void WeightToString(StringBuilder r)
- {
- /* append the weight part of a query */
- if (IsWeighted)
- {
- r.Append(WeightOperator);
- r.Append(WeightString);
- }
- }
-
- 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;
- }
-
- public abstract Search.Query MakeLuceneQueryFieldNoBoost(string fieldName, BasicQueryFactory qf);
-
- /// <summary>
- /// This method is used by <see cref="M:GetHashCode()"/> and <see cref="M:Equals(Object)"/>,
- /// see LUCENE-2945.
- /// </summary>
- /// <returns></returns>
- public abstract override string ToString();
-
- public virtual bool IsFieldsSubQueryAcceptable { get { return true; } }
-
- /// <summary> Shallow clone. Subclasses must override this if they
- /// need to clone any members deeply,
- /// </summary>
- public virtual object Clone()
- {
- object clone = null;
- try
- {
- clone = base.MemberwiseClone();
- }
- catch (Exception e)
- {
- throw new SystemException(e.Message, e); // shouldn't happen
- }
- return clone;
- }
-
- /// <summary>
- /// For subclasses of <see cref="SrndQuery"/> within the package
- /// {@link org.apache.lucene.queryparser.surround.query}
- /// it is not necessary to override this method, <see cref="M:ToString()"/>
- /// </summary>
- public override int GetHashCode()
- {
- return GetType().GetHashCode() ^ ToString().GetHashCode();
- }
-
- /// <summary>
- /// For subclasses of <see cref="SrndQuery"/> within the package
- /// {@link org.apache.lucene.queryparser.surround.query}
- /// it is not necessary to override this method,
- /// @see #toString()
- /// </summary>
- /// <param name="obj"></param>
- /// <returns></returns>
- public override bool Equals(object obj)
- {
- if (obj == null)
- return false;
- if (!GetType().Equals(obj.GetType()))
- return false;
- return ToString().Equals(obj.ToString());
- }
-
- /// <summary> An empty Lucene query </summary>
- public readonly static Search.Query TheEmptyLcnQuery = new EmptyLcnQuery(); /* no changes allowed */
-
- internal sealed class EmptyLcnQuery : BooleanQuery
- {
- public override float Boost
- {
- get { return base.Boost; }
- set { throw new NotSupportedException(); }
- }
-
- public override void Add(BooleanClause clause)
- {
- throw new NotSupportedException();
- }
-
- public override void Add(Search.Query query, BooleanClause.Occur occur)
- {
- throw new NotSupportedException();
- }
- }
- }
-}
http://git-wip-us.apache.org/repos/asf/lucenenet/blob/679ad24c/Lucene.Net.QueryParser/Surround/Query/SrndTermQuery.cs
----------------------------------------------------------------------
diff --git a/Lucene.Net.QueryParser/Surround/Query/SrndTermQuery.cs b/Lucene.Net.QueryParser/Surround/Query/SrndTermQuery.cs
deleted file mode 100644
index 45885a1..0000000
--- a/Lucene.Net.QueryParser/Surround/Query/SrndTermQuery.cs
+++ /dev/null
@@ -1,63 +0,0 @@
-\ufeffusing Lucene.Net.Index;
-using Lucene.Net.Util;
-
-namespace Lucene.Net.QueryParser.Surround.Query
-{
- /*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
- /// <summary>
- /// Simple single-term clause
- /// </summary>
- public class SrndTermQuery : SimpleTerm
- {
- public SrndTermQuery(string termText, bool quoted)
- : base(quoted)
- {
- this.termText = termText;
- }
-
- private readonly string termText;
- public virtual string TermText { get { return termText; } }
-
- public virtual Term GetLuceneTerm(string fieldName)
- {
- return new Term(fieldName, TermText);
- }
-
- public override string ToStringUnquoted()
- {
- return TermText;
- }
-
- public override void VisitMatchingTerms(IndexReader reader, string fieldName, IMatchingTermVisitor mtv)
- {
- /* check term presence in index here for symmetry with other SimpleTerm's */
- Terms terms = MultiFields.GetTerms(reader, fieldName);
- if (terms != null)
- {
- TermsEnum termsEnum = terms.Iterator(null);
-
- TermsEnum.SeekStatus status = termsEnum.SeekCeil(new BytesRef(TermText));
- if (status == TermsEnum.SeekStatus.FOUND)
- {
- mtv.VisitMatchingTerm(GetLuceneTerm(fieldName));
- }
- }
- }
- }
-}
http://git-wip-us.apache.org/repos/asf/lucenenet/blob/679ad24c/Lucene.Net.QueryParser/Surround/Query/SrndTruncQuery.cs
----------------------------------------------------------------------
diff --git a/Lucene.Net.QueryParser/Surround/Query/SrndTruncQuery.cs b/Lucene.Net.QueryParser/Surround/Query/SrndTruncQuery.cs
deleted file mode 100644
index 5ed9ff3..0000000
--- a/Lucene.Net.QueryParser/Surround/Query/SrndTruncQuery.cs
+++ /dev/null
@@ -1,139 +0,0 @@
-\ufeffusing Lucene.Net.Index;
-using Lucene.Net.Util;
-using System;
-using System.Text;
-using System.Text.RegularExpressions;
-
-namespace Lucene.Net.QueryParser.Surround.Query
-{
- /*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
- public class SrndTruncQuery : SimpleTerm
- {
- public SrndTruncQuery(string truncated, char unlimited, char mask)
- : base(false) /* not quoted */
- {
- this.truncated = truncated;
- this.unlimited = unlimited;
- this.mask = mask;
- TruncatedToPrefixAndPattern();
- }
-
- private readonly string truncated;
- private readonly char unlimited;
- private readonly char mask;
-
- private string prefix;
- private BytesRef prefixRef;
- private Regex pattern;
-
- public virtual string Truncated { get { return truncated; } }
-
- public override string ToStringUnquoted()
- {
- return Truncated;
- }
-
- protected virtual bool MatchingChar(char c)
- {
- return (c != unlimited) && (c != mask);
- }
-
- protected virtual void AppendRegExpForChar(char c, StringBuilder re)
- {
- if (c == unlimited)
- re.Append(".*");
- else if (c == mask)
- re.Append(".");
- else
- re.Append(c);
- }
-
- protected virtual void TruncatedToPrefixAndPattern()
- {
- int i = 0;
- while ((i < truncated.Length) && MatchingChar(truncated[i]))
- {
- i++;
- }
- prefix = truncated.Substring(0, i);
- prefixRef = new BytesRef(prefix);
-
- StringBuilder re = new StringBuilder();
- while (i < truncated.Length)
- {
- AppendRegExpForChar(truncated[i], re);
- i++;
- }
- pattern = new Regex(re.ToString(), RegexOptions.Compiled);
- }
-
- // TODO: Finish implementation
- public override void VisitMatchingTerms(IndexReader reader, string fieldName, SimpleTerm.IMatchingTermVisitor mtv)
- {
- throw new NotImplementedException("Need to translate this from Java's whacky RegEx syntax");
- //int prefixLength = prefix.Length;
- //Terms terms = MultiFields.GetTerms(reader, fieldName);
- //if (terms != null)
- //{
- // MatchCollection matcher = pattern.Matches("");
- // try
- // {
- // TermsEnum termsEnum = terms.Iterator(null);
-
- // TermsEnum.SeekStatus status = termsEnum.SeekCeil(prefixRef);
- // BytesRef text;
- // if (status == TermsEnum.SeekStatus.FOUND)
- // {
- // text = prefixRef;
- // }
- // else if (status == TermsEnum.SeekStatus.NOT_FOUND)
- // {
- // text = termsEnum.Term();
- // }
- // else
- // {
- // text = null;
- // }
-
- // while (text != null)
- // {
- // if (text != null && StringHelper.StartsWith(text, prefixRef))
- // {
- // string textString = text.Utf8ToString();
- // matcher.Reset(textString.Substring(prefixLength));
- // if (matcher.Success)
- // {
- // mtv.VisitMatchingTerm(new Term(fieldName, textString));
- // }
- // }
- // else
- // {
- // break;
- // }
- // text = termsEnum.Next();
- // }
- // }
- // finally
- // {
- // matcher.Reset();
- // }
- //}
- }
- }
-}
http://git-wip-us.apache.org/repos/asf/lucenenet/blob/679ad24c/Lucene.Net.QueryParser/Surround/Query/TooManyBasicQueries.cs
----------------------------------------------------------------------
diff --git a/Lucene.Net.QueryParser/Surround/Query/TooManyBasicQueries.cs b/Lucene.Net.QueryParser/Surround/Query/TooManyBasicQueries.cs
deleted file mode 100644
index 27f313c..0000000
--- a/Lucene.Net.QueryParser/Surround/Query/TooManyBasicQueries.cs
+++ /dev/null
@@ -1,30 +0,0 @@
-\ufeffnamespace Lucene.Net.QueryParser.Surround.Query
-{
- /*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
- /// <summary>
- /// Exception thrown when <see cref="BasicQueryFactory"/> would exceed the limit
- /// of query clauses.
- /// </summary>
- public class TooManyBasicQueries : System.IO.IOException
- {
- public TooManyBasicQueries(int maxBasicQueries)
- : base("Exceeded maximum of " + maxBasicQueries + " basic queries.")
- { }
- }
-}
http://git-wip-us.apache.org/repos/asf/lucenenet/blob/679ad24c/Lucene.Net.Tests.QueryParser/Analyzing/TestAnalyzingQueryParser.cs
----------------------------------------------------------------------
diff --git a/Lucene.Net.Tests.QueryParser/Analyzing/TestAnalyzingQueryParser.cs b/Lucene.Net.Tests.QueryParser/Analyzing/TestAnalyzingQueryParser.cs
deleted file mode 100644
index 10756cf..0000000
--- a/Lucene.Net.Tests.QueryParser/Analyzing/TestAnalyzingQueryParser.cs
+++ /dev/null
@@ -1,341 +0,0 @@
-\ufeffusing System;
-using System.Collections.Generic;
-using System.Linq;
-using System.Text;
-using System.Threading.Tasks;
-using Lucene.Net.Analysis;
-using Lucene.Net.Analysis.Tokenattributes;
-using Lucene.Net.Documents;
-using Lucene.Net.Index;
-using Lucene.Net.QueryParser.Classic;
-using Lucene.Net.Search;
-using Lucene.Net.Store;
-using Lucene.Net.Util;
-using NUnit.Framework;
-
-namespace Lucene.Net.QueryParser.Analyzing
-{
- /*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
- [TestFixture]
- public class TestAnalyzingQueryParser : LuceneTestCase
- {
- private readonly static string FIELD = "field";
-
- private Analyzer a;
-
- private string[] wildcardInput;
- private string[] wildcardExpected;
- private string[] prefixInput;
- private string[] prefixExpected;
- private string[] rangeInput;
- private string[] rangeExpected;
- private string[] fuzzyInput;
- private string[] fuzzyExpected;
-
- private IDictionary<string, string> wildcardEscapeHits = new Dictionary<string, string>();
- private IDictionary<string, string> wildcardEscapeMisses = new Dictionary<string, string>();
-
- public override void SetUp()
- {
- base.SetUp();
- wildcardInput = new string[] { "*bersetzung �ber*ung",
- "M�tley Cr\u00fce M�tl?* Cr�?", "Ren�e Zellweger Ren?? Zellw?ger" };
- wildcardExpected = new string[] { "*bersetzung uber*ung", "motley crue motl?* cru?",
- "renee zellweger ren?? zellw?ger" };
-
- prefixInput = new string[] { "�bersetzung �bersetz*",
- "M�tley Cr�e M�tl* cr�*", "Ren�? Zellw*" };
- prefixExpected = new string[] { "ubersetzung ubersetz*", "motley crue motl* cru*",
- "rene? zellw*" };
-
- rangeInput = new string[] { "[aa TO bb]", "{Ana�s TO Zo�}" };
- rangeExpected = new string[] { "[aa TO bb]", "{anais TO zoe}" };
-
- fuzzyInput = new string[] { "�bersetzung �bersetzung~0.9",
- "M�tley Cr�e M�tley~0.75 Cr�e~0.5",
- "Ren�e Zellweger Ren�e~0.9 Zellweger~" };
- fuzzyExpected = new string[] { "ubersetzung ubersetzung~1",
- "motley crue motley~1 crue~2", "renee zellweger renee~0 zellweger~2" };
-
- wildcardEscapeHits["m�*tley"] = "moatley";
-
- // need to have at least one genuine wildcard to trigger the wildcard analysis
- // hence the * before the y
- wildcardEscapeHits["m�\\*tl*y"] = "mo*tley";
-
- // escaped backslash then true wildcard
- wildcardEscapeHits["m�\\\\*tley"] = "mo\\atley";
-
- // escaped wildcard then true wildcard
- wildcardEscapeHits["m�\\??ley"] = "mo?tley";
-
- // the first is an escaped * which should yield a miss
- wildcardEscapeMisses["m�\\*tl*y"] = "moatley";
-
- a = new ASCIIAnalyzer();
- }
-
- [Test]
- public void TestSingleChunkExceptions()
- {
- bool ex = false;
- string termStr = "the*tre";
-
- Analyzer stopsAnalyzer = new MockAnalyzer
- (Random(), MockTokenizer.WHITESPACE, true, MockTokenFilter.ENGLISH_STOPSET);
- try
- {
- string q = ParseWithAnalyzingQueryParser(termStr, stopsAnalyzer, true);
- }
- catch (ParseException e)
- {
- if (e.Message.Contains("returned nothing"))
- {
- ex = true;
- }
- }
- assertEquals("Should have returned nothing", true, ex);
- ex = false;
-
- AnalyzingQueryParser qp = new AnalyzingQueryParser(TEST_VERSION_CURRENT, FIELD, a);
- try
- {
- qp.AnalyzeSingleChunk(FIELD, "", "not a single chunk");
- }
- catch (ParseException e)
- {
- if (e.Message.Contains("multiple terms"))
- {
- ex = true;
- }
- }
- assertEquals("Should have produced multiple terms", true, ex);
- }
-
- [Test]
- public void TestWildcardAlone()
- {
- //seems like crazy edge case, but can be useful in concordance
- bool pex = false;
- try
- {
- Query q = GetAnalyzedQuery("*", a, false);
- }
- catch (ParseException e)
- {
- pex = true;
- }
- assertEquals("Wildcard alone with allowWildcard=false", true, pex);
-
- pex = false;
- try
- {
- String qString = ParseWithAnalyzingQueryParser("*", a, true);
- assertEquals("Every word", "*", qString);
- }
- catch (ParseException e)
- {
- pex = true;
- }
-
- assertEquals("Wildcard alone with allowWildcard=true", false, pex);
- }
-
- [Test]
- public void TestWildCardEscapes()
- {
- foreach (var entry in wildcardEscapeHits)
- {
- Query q = GetAnalyzedQuery(entry.Key, a, false);
- assertEquals("WildcardEscapeHits: " + entry.Key, true, IsAHit(q, entry.Value, a));
- }
- foreach (var entry in wildcardEscapeMisses)
- {
- Query q = GetAnalyzedQuery(entry.Key, a, false);
- assertEquals("WildcardEscapeMisses: " + entry.Key, false, IsAHit(q, entry.Value, a));
- }
- }
-
- [Test]
- public void TestWildCardQueryNoLeadingAllowed()
- {
- bool ex = false;
- try
- {
- string q = ParseWithAnalyzingQueryParser(wildcardInput[0], a, false);
-
- }
- catch (ParseException e)
- {
- ex = true;
- }
- assertEquals("Testing initial wildcard not allowed",
- true, ex);
- }
-
- [Test]
- public void TestWildCardQuery()
- {
- for (int i = 0; i < wildcardInput.Length; i++)
- {
- assertEquals("Testing wildcards with analyzer " + a.GetType() + ", input string: "
- + wildcardInput[i], wildcardExpected[i], ParseWithAnalyzingQueryParser(wildcardInput[i], a, true));
- }
- }
-
- [Test]
- public void TestPrefixQuery()
- {
- for (int i = 0; i < prefixInput.Length; i++)
- {
- assertEquals("Testing prefixes with analyzer " + a.GetType() + ", input string: "
- + prefixInput[i], prefixExpected[i], ParseWithAnalyzingQueryParser(prefixInput[i], a, false));
- }
- }
-
- [Test]
- public void TestRangeQuery()
- {
- for (int i = 0; i < rangeInput.Length; i++)
- {
- assertEquals("Testing ranges with analyzer " + a.GetType() + ", input string: "
- + rangeInput[i], rangeExpected[i], ParseWithAnalyzingQueryParser(rangeInput[i], a, false));
- }
- }
-
- [Test]
- public void TestFuzzyQuery()
- {
- for (int i = 0; i < fuzzyInput.Length; i++)
- {
- assertEquals("Testing fuzzys with analyzer " + a.GetType() + ", input string: "
- + fuzzyInput[i], fuzzyExpected[i], ParseWithAnalyzingQueryParser(fuzzyInput[i], a, false));
- }
- }
-
-
- private string ParseWithAnalyzingQueryParser(string s, Analyzer a, bool allowLeadingWildcard)
- {
- Query q = GetAnalyzedQuery(s, a, allowLeadingWildcard);
- return q.ToString(FIELD);
- }
-
- private Query GetAnalyzedQuery(string s, Analyzer a, bool allowLeadingWildcard)
- {
- AnalyzingQueryParser qp = new AnalyzingQueryParser(TEST_VERSION_CURRENT, FIELD, a);
- qp.AllowLeadingWildcard = allowLeadingWildcard;
- Query q = qp.Parse(s);
- return q;
- }
-
- internal sealed class FoldingFilter : TokenFilter
- {
- private readonly ICharTermAttribute termAtt;
-
- public FoldingFilter(TokenStream input)
- : base(input)
- {
- termAtt = AddAttribute<ICharTermAttribute>();
- }
-
- public sealed override bool IncrementToken()
- {
- if (input.IncrementToken())
- {
- char[] term = termAtt.Buffer();
- for (int i = 0; i < term.Length; i++)
- switch (term[i])
- {
- case '�':
- term[i] = 'u';
- break;
- case '�':
- term[i] = 'o';
- break;
- case '�':
- term[i] = 'e';
- break;
- case '�':
- term[i] = 'i';
- break;
- }
- return true;
- }
- else
- {
- return false;
- }
- }
- }
-
- internal sealed class ASCIIAnalyzer : Analyzer
- {
-
- public override TokenStreamComponents CreateComponents(string fieldName, System.IO.TextReader reader)
- {
- Tokenizer result = new MockTokenizer(reader, MockTokenizer.WHITESPACE, true);
- return new TokenStreamComponents(result, new FoldingFilter(result));
- }
- }
-
- // LUCENE-4176
- [Test]
- public void TestByteTerms()
- {
- string s = "\u0e40\u0e02";
- Analyzer analyzer = new MockBytesAnalyzer();
- Classic.QueryParser qp = new AnalyzingQueryParser(TEST_VERSION_CURRENT, FIELD, analyzer);
- Query q = qp.Parse("[\u0e40\u0e02 TO \u0e40\u0e02]");
- assertEquals(true, IsAHit(q, s, analyzer));
- }
-
- private bool IsAHit(Query q, string content, Analyzer analyzer)
- {
- int hits;
- using (Directory ramDir = NewDirectory())
- {
- using (RandomIndexWriter writer = new RandomIndexWriter(Random(), ramDir, analyzer))
- {
- Document doc = new Document();
- FieldType fieldType = new FieldType();
- fieldType.Indexed = (true);
- fieldType.Tokenized = (true);
- fieldType.Stored = (true);
- Field field = new Field(FIELD, content, fieldType);
- doc.Add(field);
- writer.AddDocument(doc);
- }
- using (DirectoryReader ir = DirectoryReader.Open(ramDir))
- {
- IndexSearcher @is = new IndexSearcher(ir);
-
- hits = @is.Search(q, 10).TotalHits;
- }
- }
- if (hits == 1)
- {
- return true;
- }
- else
- {
- return false;
- }
- }
- }
-}
http://git-wip-us.apache.org/repos/asf/lucenenet/blob/679ad24c/Lucene.Net.Tests.QueryParser/Classic/TestMultiAnalyzer.cs
----------------------------------------------------------------------
diff --git a/Lucene.Net.Tests.QueryParser/Classic/TestMultiAnalyzer.cs b/Lucene.Net.Tests.QueryParser/Classic/TestMultiAnalyzer.cs
deleted file mode 100644
index 350f181..0000000
--- a/Lucene.Net.Tests.QueryParser/Classic/TestMultiAnalyzer.cs
+++ /dev/null
@@ -1,278 +0,0 @@
-\ufeffusing System;
-using System.Collections.Generic;
-using System.Linq;
-using System.Text;
-using System.Threading.Tasks;
-using NUnit.Framework;
-using Lucene.Net.Analysis;
-using Lucene.Net.Analysis.Tokenattributes;
-using Lucene.Net.Search;
-using Lucene.Net.Util;
-
-namespace Lucene.Net.QueryParser.Classic
-{
- [TestFixture]
- public class TestMultiAnalyzer_ : BaseTokenStreamTestCase
- {
-
- private static int multiToken = 0;
-
- [Test]
- public void TestMultiAnalyzer()
- {
-
- QueryParser qp = new QueryParser(TEST_VERSION_CURRENT, "", new MultiAnalyzer());
-
- // trivial, no multiple tokens:
- assertEquals("foo", qp.Parse("foo").toString());
- assertEquals("foo", qp.Parse("\"foo\"").toString());
- assertEquals("foo foobar", qp.Parse("foo foobar").toString());
- assertEquals("\"foo foobar\"", qp.Parse("\"foo foobar\"").toString());
- assertEquals("\"foo foobar blah\"", qp.Parse("\"foo foobar blah\"").toString());
-
- // two tokens at the same position:
- assertEquals("(multi multi2) foo", qp.Parse("multi foo").toString());
- assertEquals("foo (multi multi2)", qp.Parse("foo multi").toString());
- assertEquals("(multi multi2) (multi multi2)", qp.Parse("multi multi").toString());
- assertEquals("+(foo (multi multi2)) +(bar (multi multi2))",
- qp.Parse("+(foo multi) +(bar multi)").toString());
- assertEquals("+(foo (multi multi2)) field:\"bar (multi multi2)\"",
- qp.Parse("+(foo multi) field:\"bar multi\"").toString());
-
- // phrases:
- assertEquals("\"(multi multi2) foo\"", qp.Parse("\"multi foo\"").toString());
- assertEquals("\"foo (multi multi2)\"", qp.Parse("\"foo multi\"").toString());
- assertEquals("\"foo (multi multi2) foobar (multi multi2)\"",
- qp.Parse("\"foo multi foobar multi\"").toString());
-
- // fields:
- assertEquals("(field:multi field:multi2) field:foo", qp.Parse("field:multi field:foo").toString());
- assertEquals("field:\"(multi multi2) foo\"", qp.Parse("field:\"multi foo\"").toString());
-
- // three tokens at one position:
- assertEquals("triplemulti multi3 multi2", qp.Parse("triplemulti").toString());
- assertEquals("foo (triplemulti multi3 multi2) foobar",
- qp.Parse("foo triplemulti foobar").toString());
-
- // phrase with non-default slop:
- assertEquals("\"(multi multi2) foo\"~10", qp.Parse("\"multi foo\"~10").toString());
-
- // phrase with non-default boost:
- assertEquals("\"(multi multi2) foo\"^2.0", qp.Parse("\"multi foo\"^2").toString());
-
- // phrase after changing default slop
- qp.PhraseSlop=(99);
- assertEquals("\"(multi multi2) foo\"~99 bar",
- qp.Parse("\"multi foo\" bar").toString());
- assertEquals("\"(multi multi2) foo\"~99 \"foo bar\"~2",
- qp.Parse("\"multi foo\" \"foo bar\"~2").toString());
- qp.PhraseSlop=(0);
-
- // non-default operator:
- qp.DefaultOperator=(QueryParserBase.AND_OPERATOR);
- assertEquals("+(multi multi2) +foo", qp.Parse("multi foo").toString());
-
- }
-
- [Test]
- public void TestMultiAnalyzerWithSubclassOfQueryParser()
- {
-
- DumbQueryParser qp = new DumbQueryParser("", new MultiAnalyzer());
- qp.PhraseSlop = (99); // modified default slop
-
- // direct call to (super's) getFieldQuery to demonstrate differnce
- // between phrase and multiphrase with modified default slop
- assertEquals("\"foo bar\"~99",
- qp.GetSuperFieldQuery("", "foo bar", true).toString());
- assertEquals("\"(multi multi2) bar\"~99",
- qp.GetSuperFieldQuery("", "multi bar", true).toString());
-
-
- // ask sublcass to parse phrase with modified default slop
- assertEquals("\"(multi multi2) foo\"~99 bar",
- qp.Parse("\"multi foo\" bar").toString());
-
- }
-
- [Test]
- public void TestPosIncrementAnalyzer()
- {
- QueryParser qp = new QueryParser(LuceneVersion.LUCENE_40, "", new PosIncrementAnalyzer());
- assertEquals("quick brown", qp.Parse("the quick brown").toString());
- assertEquals("quick brown fox", qp.Parse("the quick brown fox").toString());
- }
-
- /// <summary>
- /// Expands "multi" to "multi" and "multi2", both at the same position,
- /// and expands "triplemulti" to "triplemulti", "multi3", and "multi2".
- /// </summary>
- private class MultiAnalyzer : Analyzer
- {
- public override TokenStreamComponents CreateComponents(string fieldName, System.IO.TextReader reader)
- {
- Tokenizer result = new MockTokenizer(reader, MockTokenizer.WHITESPACE, true);
- return new TokenStreamComponents(result, new TestFilter(result));
- }
- }
-
- private sealed class TestFilter : TokenFilter
- {
-
- private string prevType;
- private int prevStartOffset;
- private int prevEndOffset;
-
- private readonly ICharTermAttribute termAtt;
- private readonly IPositionIncrementAttribute posIncrAtt;
- private readonly IOffsetAttribute offsetAtt;
- private readonly ITypeAttribute typeAtt;
-
- public TestFilter(TokenStream @in)
- : base(@in)
- {
- termAtt = AddAttribute<ICharTermAttribute>();
- posIncrAtt = AddAttribute<IPositionIncrementAttribute>();
- offsetAtt = AddAttribute<IOffsetAttribute>();
- typeAtt = AddAttribute<ITypeAttribute>();
- }
-
- public override sealed bool IncrementToken()
- {
- if (multiToken > 0)
- {
- termAtt.SetEmpty().Append("multi" + (multiToken + 1));
- offsetAtt.SetOffset(prevStartOffset, prevEndOffset);
- typeAtt.Type = (prevType);
- posIncrAtt.PositionIncrement = (0);
- multiToken--;
- return true;
- }
- else
- {
- bool next = input.IncrementToken();
- if (!next)
- {
- return false;
- }
- prevType = typeAtt.Type;
- prevStartOffset = offsetAtt.StartOffset();
- prevEndOffset = offsetAtt.EndOffset();
- string text = termAtt.toString();
- if (text.equals("triplemulti"))
- {
- multiToken = 2;
- return true;
- }
- else if (text.equals("multi"))
- {
- multiToken = 1;
- return true;
- }
- else
- {
- return true;
- }
- }
- }
-
- public override void Reset()
- {
- base.Reset();
- this.prevType = null;
- this.prevStartOffset = 0;
- this.prevEndOffset = 0;
- }
- }
-
- /// <summary>
- /// Analyzes "the quick brown" as: quick(incr=2) brown(incr=1).
- /// Does not work correctly for input other than "the quick brown ...".
- /// </summary>
- private class PosIncrementAnalyzer : Analyzer
- {
- public override TokenStreamComponents CreateComponents(string fieldName, System.IO.TextReader reader)
- {
- Tokenizer result = new MockTokenizer(reader, MockTokenizer.WHITESPACE, true);
- return new TokenStreamComponents(result, new TestPosIncrementFilter(result));
- }
- }
-
- private sealed class TestPosIncrementFilter : TokenFilter
- {
- ICharTermAttribute termAtt;
- IPositionIncrementAttribute posIncrAtt;
-
- public TestPosIncrementFilter(TokenStream @in)
- : base(@in)
- {
- termAtt = AddAttribute<ICharTermAttribute>();
- posIncrAtt = AddAttribute<IPositionIncrementAttribute>();
- }
-
- public override sealed bool IncrementToken()
- {
- while (input.IncrementToken())
- {
- if (termAtt.toString().equals("the"))
- {
- // stopword, do nothing
- }
- else if (termAtt.toString().equals("quick"))
- {
- posIncrAtt.PositionIncrement = (2);
- return true;
- }
- else
- {
- posIncrAtt.PositionIncrement = (1);
- return true;
- }
- }
- return false;
- }
- }
-
- /// <summary>
- /// a very simple subclass of QueryParser
- /// </summary>
- private sealed class DumbQueryParser : QueryParser
- {
- public DumbQueryParser(string f, Analyzer a)
- : base(TEST_VERSION_CURRENT, f, a)
- {
- }
-
- // expose super's version
- public Query GetSuperFieldQuery(string f, string t, bool quoted)
- {
- return base.GetFieldQuery(f, t, quoted);
- }
-
- // wrap super's version
- protected internal override Query GetFieldQuery(string field, string queryText, bool quoted)
- {
- return new DumbQueryWrapper(GetSuperFieldQuery(field, queryText, quoted));
- }
- }
-
- /// <summary>
- /// A very simple wrapper to prevent instanceof checks but uses
- /// the toString of the query it wraps.
- /// </summary>
- private sealed class DumbQueryWrapper : Query
- {
- private Query q;
- public DumbQueryWrapper(Query q)
- {
- this.q = q;
- }
-
- public override string ToString(string field)
- {
- return q.ToString(field);
- }
- }
-
- }
-}