You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@lucenenet.apache.org by cc...@apache.org on 2011/11/09 22:03:52 UTC
[Lucene.Net] svn commit: r1199962 [12/14] - in
/incubator/lucene.net/branches/Lucene.Net.3.0.3/trunk: src/core/
src/core/Analysis/ src/core/Analysis/Standard/ src/core/Document/
src/core/Index/ src/core/QueryParser/ src/core/Search/
src/core/Search/Function/ src/co...
Modified: incubator/lucene.net/branches/Lucene.Net.3.0.3/trunk/src/core/Search/Spans/SpanQuery.cs
URL: http://svn.apache.org/viewvc/incubator/lucene.net/branches/Lucene.Net.3.0.3/trunk/src/core/Search/Spans/SpanQuery.cs?rev=1199962&r1=1199961&r2=1199962&view=diff
==============================================================================
--- incubator/lucene.net/branches/Lucene.Net.3.0.3/trunk/src/core/Search/Spans/SpanQuery.cs (original)
+++ incubator/lucene.net/branches/Lucene.Net.3.0.3/trunk/src/core/Search/Spans/SpanQuery.cs Wed Nov 9 21:03:47 2011
@@ -37,14 +37,6 @@ namespace Lucene.Net.Search.Spans
/// <summary>Returns the name of the field matched by this query.</summary>
public abstract System.String GetField();
- /// <summary>Returns a collection of all terms matched by this query.</summary>
- /// <deprecated> use extractTerms instead
- /// </deprecated>
- /// <seealso cref="Query.ExtractTerms(System.Collections.Hashtable)">
- /// </seealso>
- [Obsolete("use ExtractTerms instead")]
- public abstract System.Collections.ICollection GetTerms();
-
public override Weight CreateWeight(Searcher searcher)
{
return new SpanWeight(this, searcher);
Modified: incubator/lucene.net/branches/Lucene.Net.3.0.3/trunk/src/core/Search/Spans/SpanScorer.cs
URL: http://svn.apache.org/viewvc/incubator/lucene.net/branches/Lucene.Net.3.0.3/trunk/src/core/Search/Spans/SpanScorer.cs?rev=1199962&r1=1199961&r2=1199962&view=diff
==============================================================================
--- incubator/lucene.net/branches/Lucene.Net.3.0.3/trunk/src/core/Search/Spans/SpanScorer.cs (original)
+++ incubator/lucene.net/branches/Lucene.Net.3.0.3/trunk/src/core/Search/Spans/SpanScorer.cs Wed Nov 9 21:03:47 2011
@@ -33,10 +33,6 @@ namespace Lucene.Net.Search.Spans
protected internal byte[] norms;
protected internal float value_Renamed;
- /// <deprecated> not needed anymore
- /// </deprecated>
- [Obsolete("not needed anymore ")]
- protected internal bool firstTime = true;
protected internal bool more = true;
protected internal int doc;
@@ -59,14 +55,6 @@ namespace Lucene.Net.Search.Spans
}
}
- /// <deprecated> use <see cref="NextDoc()" /> instead.
- /// </deprecated>
- [Obsolete("use NextDoc() instead.")]
- public override bool Next()
- {
- return NextDoc() != NO_MORE_DOCS;
- }
-
public override int NextDoc()
{
if (!SetFreqCurrentDoc())
@@ -76,14 +64,6 @@ namespace Lucene.Net.Search.Spans
return doc;
}
- /// <deprecated> use <see cref="Advance(int)" /> instead.
- /// </deprecated>
- [Obsolete("use Advance(int) instead. ")]
- public override bool SkipTo(int target)
- {
- return Advance(target) != NO_MORE_DOCS;
- }
-
public override int Advance(int target)
{
if (!more)
@@ -120,14 +100,6 @@ namespace Lucene.Net.Search.Spans
return true;
}
- /// <deprecated> use <see cref="DocID()" /> instead.
- /// </deprecated>
- [Obsolete("use DocID() instead. ")]
- public override int Doc()
- {
- return doc;
- }
-
public override int DocID()
{
return doc;
@@ -139,6 +111,10 @@ namespace Lucene.Net.Search.Spans
return norms == null?raw:raw * Similarity.DecodeNorm(norms[doc]); // normalize
}
+ /// <summary>
+ /// This method is no longer an official member of <see cref="Scorer"/>
+ /// but it is needed by SpanWeight to build an explanation.
+ /// </summary>
public override Explanation Explain(int doc)
{
Explanation tfExplanation = new Explanation();
Modified: incubator/lucene.net/branches/Lucene.Net.3.0.3/trunk/src/core/Search/Spans/SpanTermQuery.cs
URL: http://svn.apache.org/viewvc/incubator/lucene.net/branches/Lucene.Net.3.0.3/trunk/src/core/Search/Spans/SpanTermQuery.cs?rev=1199962&r1=1199961&r2=1199962&view=diff
==============================================================================
--- incubator/lucene.net/branches/Lucene.Net.3.0.3/trunk/src/core/Search/Spans/SpanTermQuery.cs (original)
+++ incubator/lucene.net/branches/Lucene.Net.3.0.3/trunk/src/core/Search/Spans/SpanTermQuery.cs Wed Nov 9 21:03:47 2011
@@ -46,22 +46,10 @@ namespace Lucene.Net.Search.Spans
{
return term.Field();
}
-
- /// <summary>Returns a collection of all terms matched by this query.</summary>
- /// <deprecated> use extractTerms instead
- /// </deprecated>
- /// <seealso cref="ExtractTerms(System.Collections.Hashtable)">
- /// </seealso>
- [Obsolete("use extractTerms instead")]
- public override System.Collections.ICollection GetTerms()
- {
- System.Collections.ArrayList terms = new System.Collections.ArrayList();
- terms.Add(term);
- return terms;
- }
- public override void ExtractTerms(System.Collections.Hashtable terms)
+
+ public override void ExtractTerms(System.Collections.Generic.ISet<Term> terms)
{
- SupportClass.CollectionsHelper.AddIfNotContains(terms, term);
+ terms.Add(term);
}
public override System.String ToString(System.String field)
Modified: incubator/lucene.net/branches/Lucene.Net.3.0.3/trunk/src/core/Search/Spans/SpanWeight.cs
URL: http://svn.apache.org/viewvc/incubator/lucene.net/branches/Lucene.Net.3.0.3/trunk/src/core/Search/Spans/SpanWeight.cs?rev=1199962&r1=1199961&r2=1199962&view=diff
==============================================================================
--- incubator/lucene.net/branches/Lucene.Net.3.0.3/trunk/src/core/Search/Spans/SpanWeight.cs (original)
+++ incubator/lucene.net/branches/Lucene.Net.3.0.3/trunk/src/core/Search/Spans/SpanWeight.cs Wed Nov 9 21:03:47 2011
@@ -16,7 +16,8 @@
*/
using System;
-
+using System.Collections.Generic;
+using Lucene.Net.Index;
using IndexReader = Lucene.Net.Index.IndexReader;
using Lucene.Net.Search;
using IDFExplanation = Lucene.Net.Search.Explanation.IDFExplanation;
@@ -33,8 +34,8 @@ namespace Lucene.Net.Search.Spans
protected internal float idf;
protected internal float queryNorm;
protected internal float queryWeight;
-
- protected internal System.Collections.Hashtable terms;
+
+ protected internal HashSet<Term> terms;
protected internal SpanQuery query;
private IDFExplanation idfExp;
@@ -42,9 +43,11 @@ namespace Lucene.Net.Search.Spans
{
this.similarity = query.GetSimilarity(searcher);
this.query = query;
- terms = new System.Collections.Hashtable();
+
+ terms = new HashSet<Term>();
query.ExtractTerms(terms);
- idfExp = similarity.idfExplain(new System.Collections.ArrayList(terms.Values), searcher);
+
+ idfExp = similarity.idfExplain(terms, searcher);
idf = idfExp.GetIdf();
}
Modified: incubator/lucene.net/branches/Lucene.Net.3.0.3/trunk/src/core/Search/TermQuery.cs
URL: http://svn.apache.org/viewvc/incubator/lucene.net/branches/Lucene.Net.3.0.3/trunk/src/core/Search/TermQuery.cs?rev=1199962&r1=1199961&r2=1199962&view=diff
==============================================================================
--- incubator/lucene.net/branches/Lucene.Net.3.0.3/trunk/src/core/Search/TermQuery.cs (original)
+++ incubator/lucene.net/branches/Lucene.Net.3.0.3/trunk/src/core/Search/TermQuery.cs Wed Nov 9 21:03:47 2011
@@ -130,9 +130,32 @@ namespace Lucene.Net.Search
System.String field = Enclosing_Instance.term.Field();
ComplexExplanation fieldExpl = new ComplexExplanation();
fieldExpl.SetDescription("fieldWeight(" + Enclosing_Instance.term + " in " + doc + "), product of:");
-
- Explanation tfExpl = Scorer(reader, true, false).Explain(doc);
- fieldExpl.AddDetail(tfExpl);
+
+ Explanation tfExplanation = new Explanation();
+ int tf = 0;
+ TermDocs termDocs = reader.TermDocs(enclosingInstance.term);
+ if (termDocs != null)
+ {
+ try
+ {
+ if (termDocs.SkipTo(doc) && termDocs.Doc() == doc)
+ {
+ tf = termDocs.Freq();
+ }
+ }
+ finally
+ {
+ termDocs.Close();
+ }
+ tfExplanation.SetValue(similarity.Tf(tf));
+ tfExplanation.SetDescription("tf(termFreq(" + enclosingInstance.term + ")=" + tf + ")");
+ }
+ else
+ {
+ tfExplanation.SetValue(0.0f);
+ tfExplanation.SetDescription("no matching term");
+ }
+ fieldExpl.AddDetail(tfExplanation);
fieldExpl.AddDetail(expl);
Explanation fieldNormExpl = new Explanation();
@@ -141,9 +164,9 @@ namespace Lucene.Net.Search
fieldNormExpl.SetValue(fieldNorm);
fieldNormExpl.SetDescription("fieldNorm(field=" + field + ", doc=" + doc + ")");
fieldExpl.AddDetail(fieldNormExpl);
-
- fieldExpl.SetMatch(tfExpl.IsMatch());
- fieldExpl.SetValue(tfExpl.GetValue() * expl.GetValue() * fieldNormExpl.GetValue());
+
+ fieldExpl.SetMatch(tfExplanation.IsMatch());
+ fieldExpl.SetValue(tfExplanation.GetValue() * expl.GetValue() * fieldNormExpl.GetValue());
result.AddDetail(fieldExpl);
System.Boolean? tempAux = fieldExpl.GetMatch();
@@ -176,9 +199,9 @@ namespace Lucene.Net.Search
return new TermWeight(this, searcher);
}
- public override void ExtractTerms(System.Collections.Hashtable terms)
+ public override void ExtractTerms(System.Collections.Generic.ISet<Term> terms)
{
- SupportClass.CollectionsHelper.AddIfNotContains(terms, GetTerm());
+ terms.Add(GetTerm());
}
/// <summary>Prints a user-readable version of this query. </summary>
Modified: incubator/lucene.net/branches/Lucene.Net.3.0.3/trunk/src/core/Search/TermScorer.cs
URL: http://svn.apache.org/viewvc/incubator/lucene.net/branches/Lucene.Net.3.0.3/trunk/src/core/Search/TermScorer.cs?rev=1199962&r1=1199961&r2=1199962&view=diff
==============================================================================
--- incubator/lucene.net/branches/Lucene.Net.3.0.3/trunk/src/core/Search/TermScorer.cs (original)
+++ incubator/lucene.net/branches/Lucene.Net.3.0.3/trunk/src/core/Search/TermScorer.cs Wed Nov 9 21:03:47 2011
@@ -65,27 +65,11 @@ namespace Lucene.Net.Search
scoreCache[i] = GetSimilarity().Tf(i) * weightValue;
}
- /// <deprecated> use <see cref="Score(Collector)" /> instead.
- /// </deprecated>
- [Obsolete("use Score(Collector) instead. ")]
- public override void Score(HitCollector hc)
- {
- Score(new HitCollectorWrapper(hc));
- }
-
public override void Score(Collector c)
{
Score(c, System.Int32.MaxValue, NextDoc());
}
- /// <deprecated> use <see cref="Score(Collector, int, int)" /> instead.
- /// </deprecated>
- [Obsolete("use Score(Collector, int, int) instead.")]
- protected internal override bool Score(HitCollector c, int end)
- {
- return Score(new HitCollectorWrapper(c), end, doc);
- }
-
// firstDocID is ignored since nextDoc() sets 'doc'
public /*protected internal*/ override bool Score(Collector c, int end, int firstDocID)
{
@@ -114,14 +98,6 @@ namespace Lucene.Net.Search
return true;
}
- /// <deprecated> use <see cref="DocID()" /> instead.
- /// </deprecated>
- [Obsolete("use DocID() instead. ")]
- public override int Doc()
- {
- return doc;
- }
-
public override int DocID()
{
return doc;
@@ -132,21 +108,6 @@ namespace Lucene.Net.Search
/// <see cref="TermDocs.Read(int[],int[])" />.
///
/// </summary>
- /// <returns> true iff there is another document matching the query.
- /// </returns>
- /// <deprecated> use <see cref="NextDoc()" /> instead.
- /// </deprecated>
- [Obsolete("use NextDoc() instead.")]
- public override bool Next()
- {
- return NextDoc() != NO_MORE_DOCS;
- }
-
- /// <summary> Advances to the next document matching the query. <br/>
- /// The iterator over the matching documents is buffered using
- /// <see cref="TermDocs.Read(int[],int[])" />.
- ///
- /// </summary>
/// <returns> the document matching the query or -1 if there are no more documents.
/// </returns>
public override int NextDoc()
@@ -178,23 +139,6 @@ namespace Lucene.Net.Search
return norms == null?raw:raw * SIM_NORM_DECODER[norms[doc] & 0xFF]; // normalize for field
}
- /// <summary> Skips to the first match beyond the current whose document number is
- /// greater than or equal to a given target. <br/>
- /// The implementation uses <see cref="TermDocs.SkipTo(int)" />.
- ///
- /// </summary>
- /// <param name="target">The target document number.
- /// </param>
- /// <returns> true iff there is such a match.
- /// </returns>
- /// <deprecated> use <see cref="Advance(int)" /> instead.
- /// </deprecated>
- [Obsolete("use Advance(int) instead.")]
- public override bool SkipTo(int target)
- {
- return Advance(target) != NO_MORE_DOCS;
- }
-
/// <summary> Advances to the first match beyond the current whose document number is
/// greater than or equal to a given target. <br/>
/// The implementation uses <see cref="TermDocs.SkipTo(int)" />.
@@ -231,40 +175,6 @@ namespace Lucene.Net.Search
return doc;
}
- /// <summary>Returns an explanation of the score for a document.
- /// <br/>When this method is used, the <see cref="Next()" /> method
- /// and the <see cref="Score(HitCollector)" /> method should not be used.
- /// </summary>
- /// <param name="doc">The document number for the explanation.
- /// </param>
- public override Explanation Explain(int doc)
- {
- TermQuery query = (TermQuery) weight.GetQuery();
- Explanation tfExplanation = new Explanation();
- int tf = 0;
- while (pointer < pointerMax)
- {
- if (docs[pointer] == doc)
- tf = freqs[pointer];
- pointer++;
- }
- if (tf == 0)
- {
- if (termDocs.SkipTo(doc))
- {
- if (termDocs.Doc() == doc)
- {
- tf = termDocs.Freq();
- }
- }
- }
- termDocs.Close();
- tfExplanation.SetValue(GetSimilarity().Tf(tf));
- tfExplanation.SetDescription("tf(termFreq(" + query.GetTerm() + ")=" + tf + ")");
-
- return tfExplanation;
- }
-
/// <summary>Returns a string representation of this <c>TermScorer</c>. </summary>
public override System.String ToString()
{
Modified: incubator/lucene.net/branches/Lucene.Net.3.0.3/trunk/src/core/Search/TopDocsCollector.cs
URL: http://svn.apache.org/viewvc/incubator/lucene.net/branches/Lucene.Net.3.0.3/trunk/src/core/Search/TopDocsCollector.cs?rev=1199962&r1=1199961&r2=1199962&view=diff
==============================================================================
--- incubator/lucene.net/branches/Lucene.Net.3.0.3/trunk/src/core/Search/TopDocsCollector.cs (original)
+++ incubator/lucene.net/branches/Lucene.Net.3.0.3/trunk/src/core/Search/TopDocsCollector.cs Wed Nov 9 21:03:47 2011
@@ -16,20 +16,19 @@
*/
using System;
-
-using PriorityQueue = Lucene.Net.Util.PriorityQueue;
+using Lucene.Net.Util;
namespace Lucene.Net.Search
{
/// <summary> A base class for all collectors that return a <see cref="Lucene.Net.Search.TopDocs" /> output. This
/// collector allows easy extension by providing a single constructor which
- /// accepts a <see cref="PriorityQueue" /> as well as protected members for that
+ /// accepts a <see cref="PriorityQueue{T}" /> as well as protected members for that
/// priority queue and a counter of the number of total hits.<br/>
/// Extending classes can override <see cref="TopDocs(int, int)" /> and
/// <see cref="GetTotalHits()" /> in order to provide their own implementation.
/// </summary>
- public abstract class TopDocsCollector:Collector
+ public abstract class TopDocsCollector<T> : Collector where T : ScoreDoc
{
// This is used in case topDocs() is called with illegal parameters, or there
@@ -41,12 +40,12 @@ namespace Lucene.Net.Search
/// HitQueue for example aggregates the top scoring documents, while other PQ
/// implementations may hold documents sorted by other criteria.
/// </summary>
- protected internal PriorityQueue pq;
+ protected internal PriorityQueue<T> pq;
/// <summary>The total number of documents that the collector encountered. </summary>
protected internal int totalHits;
- protected internal TopDocsCollector(PriorityQueue pq)
+ protected internal TopDocsCollector(PriorityQueue<T> pq)
{
this.pq = pq;
}
@@ -58,7 +57,7 @@ namespace Lucene.Net.Search
{
for (int i = howMany - 1; i >= 0; i--)
{
- results[i] = (ScoreDoc) pq.Pop();
+ results[i] = pq.Pop();
}
}
Modified: incubator/lucene.net/branches/Lucene.Net.3.0.3/trunk/src/core/Search/TopFieldCollector.cs
URL: http://svn.apache.org/viewvc/incubator/lucene.net/branches/Lucene.Net.3.0.3/trunk/src/core/Search/TopFieldCollector.cs?rev=1199962&r1=1199961&r2=1199962&view=diff
==============================================================================
--- incubator/lucene.net/branches/Lucene.Net.3.0.3/trunk/src/core/Search/TopFieldCollector.cs (original)
+++ incubator/lucene.net/branches/Lucene.Net.3.0.3/trunk/src/core/Search/TopFieldCollector.cs Wed Nov 9 21:03:47 2011
@@ -16,9 +16,8 @@
*/
using System;
-
+using Lucene.Net.Util;
using IndexReader = Lucene.Net.Index.IndexReader;
-using PriorityQueue = Lucene.Net.Util.PriorityQueue;
using Entry = Lucene.Net.Search.FieldValueHitQueue.Entry;
namespace Lucene.Net.Search
@@ -33,21 +32,19 @@ namespace Lucene.Net.Search
/// <p/><b>NOTE:</b> This API is experimental and might change in
/// incompatible ways in the next release.<p/>
/// </summary>
- public abstract class TopFieldCollector:TopDocsCollector
+ public abstract class TopFieldCollector : TopDocsCollector<Entry>
{
-
// TODO: one optimization we could do is to pre-fill
// the queue with sentinel value that guaranteed to
// always compare lower than a real hit; this would
// save having to check queueFull on each insert
- /*
- * Implements a TopFieldCollector over one SortField criteria, without
- * tracking document scores and maxScore.
- */
- private class OneComparatorNonScoringCollector:TopFieldCollector
+ //
+ // Implements a TopFieldCollector over one SortField criteria, without
+ // tracking document scores and maxScore.
+ //
+ private class OneComparatorNonScoringCollector : TopFieldCollector
{
-
internal FieldComparator comparator;
internal int reverseMul;
@@ -57,14 +54,14 @@ namespace Lucene.Net.Search
reverseMul = queue.GetReverseMul()[0];
}
- internal void UpdateBottom(int doc)
+ internal void UpdateBottom(int doc)
{
// bottom.score is already set to Float.NaN in add().
- bottom.docID = docBase + doc;
- bottom = (Entry) pq.UpdateTop();
+ bottom.doc = docBase + doc;
+ bottom = pq.UpdateTop();
}
- public override void Collect(int doc)
+ public override void Collect(int doc)
{
++totalHits;
if (queueFull)
@@ -96,23 +93,23 @@ namespace Lucene.Net.Search
}
}
- public override void SetNextReader(IndexReader reader, int docBase)
+ public override void SetNextReader(IndexReader reader, int docBase)
{
this.docBase = docBase;
comparator.SetNextReader(reader, docBase);
}
- public override void SetScorer(Scorer scorer)
+ public override void SetScorer(Scorer scorer)
{
comparator.SetScorer(scorer);
}
}
- /*
- * Implements a TopFieldCollector over one SortField criteria, without
- * tracking document scores and maxScore, and assumes out of orderness in doc
- * Ids collection.
- */
+ //
+ // Implements a TopFieldCollector over one SortField criteria, without
+ // tracking document scores and maxScore, and assumes out of orderness in doc
+ // Ids collection.
+ //
private class OutOfOrderOneComparatorNonScoringCollector:OneComparatorNonScoringCollector
{
@@ -120,14 +117,14 @@ namespace Lucene.Net.Search
{
}
- public override void Collect(int doc)
+ public override void Collect(int doc)
{
++totalHits;
if (queueFull)
{
// Fastmatch: return if this hit is not competitive
int cmp = reverseMul * comparator.CompareBottom(doc);
- if (cmp < 0 || (cmp == 0 && doc + docBase > bottom.docID))
+ if (cmp < 0 || (cmp == 0 && doc + docBase > bottom.doc))
{
return ;
}
@@ -161,7 +158,7 @@ namespace Lucene.Net.Search
* Implements a TopFieldCollector over one SortField criteria, while tracking
* document scores but no maxScore.
*/
- private class OneComparatorScoringNoMaxScoreCollector:OneComparatorNonScoringCollector
+ private class OneComparatorScoringNoMaxScoreCollector : OneComparatorNonScoringCollector
{
internal Scorer scorer;
@@ -170,14 +167,14 @@ namespace Lucene.Net.Search
{
}
- internal void updateBottom(int doc, float score)
+ internal void UpdateBottom(int doc, float score)
{
- bottom.docID = docBase + doc;
+ bottom.doc = docBase + doc;
bottom.score = score;
- bottom = (Entry) pq.UpdateTop();
+ bottom = pq.UpdateTop();
}
- public override void Collect(int doc)
+ public override void Collect(int doc)
{
++totalHits;
if (queueFull)
@@ -195,7 +192,7 @@ namespace Lucene.Net.Search
// This hit is competitive - replace bottom element in queue & adjustTop
comparator.Copy(bottom.slot, doc);
- updateBottom(doc, score);
+ UpdateBottom(doc, score);
comparator.SetBottom(bottom.slot);
}
else
@@ -227,7 +224,7 @@ namespace Lucene.Net.Search
* document scores but no maxScore, and assumes out of orderness in doc Ids
* collection.
*/
- private class OutOfOrderOneComparatorScoringNoMaxScoreCollector:OneComparatorScoringNoMaxScoreCollector
+ private class OutOfOrderOneComparatorScoringNoMaxScoreCollector : OneComparatorScoringNoMaxScoreCollector
{
public OutOfOrderOneComparatorScoringNoMaxScoreCollector(FieldValueHitQueue queue, int numHits, bool fillFields):base(queue, numHits, fillFields)
@@ -241,7 +238,7 @@ namespace Lucene.Net.Search
{
// Fastmatch: return if this hit is not competitive
int cmp = reverseMul * comparator.CompareBottom(doc);
- if (cmp < 0 || (cmp == 0 && doc + docBase > bottom.docID))
+ if (cmp < 0 || (cmp == 0 && doc + docBase > bottom.doc))
{
return ;
}
@@ -251,7 +248,7 @@ namespace Lucene.Net.Search
// This hit is competitive - replace bottom element in queue & adjustTop
comparator.Copy(bottom.slot, doc);
- updateBottom(doc, score);
+ UpdateBottom(doc, score);
comparator.SetBottom(bottom.slot);
}
else
@@ -277,10 +274,10 @@ namespace Lucene.Net.Search
}
}
- /*
- * Implements a TopFieldCollector over one SortField criteria, with tracking
- * document scores and maxScore.
- */
+ //
+ // Implements a TopFieldCollector over one SortField criteria, with tracking
+ // document scores and maxScore.
+ //
private class OneComparatorScoringMaxScoreCollector:OneComparatorNonScoringCollector
{
@@ -294,9 +291,9 @@ namespace Lucene.Net.Search
internal void UpdateBottom(int doc, float score)
{
- bottom.docID = docBase + doc;
+ bottom.doc = docBase + doc;
bottom.score = score;
- bottom = (Entry) pq.UpdateTop();
+ bottom = pq.UpdateTop();
}
public override void Collect(int doc)
@@ -343,12 +340,12 @@ namespace Lucene.Net.Search
}
}
- /*
- * Implements a TopFieldCollector over one SortField criteria, with tracking
- * document scores and maxScore, and assumes out of orderness in doc Ids
- * collection.
- */
- private class OutOfOrderOneComparatorScoringMaxScoreCollector:OneComparatorScoringMaxScoreCollector
+ //
+ // Implements a TopFieldCollector over one SortField criteria, with tracking
+ // document scores and maxScore, and assumes out of orderness in doc Ids
+ // collection.
+ //
+ private class OutOfOrderOneComparatorScoringMaxScoreCollector : OneComparatorScoringMaxScoreCollector
{
public OutOfOrderOneComparatorScoringMaxScoreCollector(FieldValueHitQueue queue, int numHits, bool fillFields):base(queue, numHits, fillFields)
@@ -367,7 +364,7 @@ namespace Lucene.Net.Search
{
// Fastmatch: return if this hit is not competitive
int cmp = reverseMul * comparator.CompareBottom(doc);
- if (cmp < 0 || (cmp == 0 && doc + docBase > bottom.docID))
+ if (cmp < 0 || (cmp == 0 && doc + docBase > bottom.doc))
{
return ;
}
@@ -403,7 +400,6 @@ namespace Lucene.Net.Search
*/
private class MultiComparatorNonScoringCollector:TopFieldCollector
{
-
internal FieldComparator[] comparators;
internal int[] reverseMul;
@@ -416,8 +412,8 @@ namespace Lucene.Net.Search
internal void UpdateBottom(int doc)
{
// bottom.score is already set to Float.NaN in add().
- bottom.docID = docBase + doc;
- bottom = (Entry) pq.UpdateTop();
+ bottom.doc = docBase + doc;
+ bottom = pq.UpdateTop();
}
public override void Collect(int doc)
@@ -534,7 +530,7 @@ namespace Lucene.Net.Search
else if (i == comparators.Length - 1)
{
// This is the equals case.
- if (doc + docBase > bottom.docID)
+ if (doc + docBase > bottom.doc)
{
// Definitely not competitive
return ;
@@ -586,7 +582,7 @@ namespace Lucene.Net.Search
* Implements a TopFieldCollector over multiple SortField criteria, with
* tracking document scores and maxScore.
*/
- private class MultiComparatorScoringMaxScoreCollector:MultiComparatorNonScoringCollector
+ private class MultiComparatorScoringMaxScoreCollector : MultiComparatorNonScoringCollector
{
internal Scorer scorer;
@@ -599,9 +595,9 @@ namespace Lucene.Net.Search
internal void UpdateBottom(int doc, float score)
{
- bottom.docID = docBase + doc;
+ bottom.doc = docBase + doc;
bottom.score = score;
- bottom = (Entry) pq.UpdateTop();
+ bottom = pq.UpdateTop();
}
public override void Collect(int doc)
@@ -716,7 +712,7 @@ namespace Lucene.Net.Search
else if (i == comparators.Length - 1)
{
// This is the equals case.
- if (doc + docBase > bottom.docID)
+ if (doc + docBase > bottom.doc)
{
// Definitely not competitive
return ;
@@ -779,9 +775,9 @@ namespace Lucene.Net.Search
internal void UpdateBottom(int doc, float score)
{
- bottom.docID = docBase + doc;
+ bottom.doc = docBase + doc;
bottom.score = score;
- bottom = (Entry) pq.UpdateTop();
+ bottom = pq.UpdateTop();
}
public override void Collect(int doc)
@@ -891,7 +887,7 @@ namespace Lucene.Net.Search
else if (i == comparators.Length - 1)
{
// This is the equals case.
- if (doc + docBase > bottom.docID)
+ if (doc + docBase > bottom.doc)
{
// Definitely not competitive
return ;
@@ -970,7 +966,8 @@ namespace Lucene.Net.Search
// internal versions. If someone will define a constructor with any other
// visibility, then anyone will be able to extend the class, which is not what
// we want.
- private TopFieldCollector(PriorityQueue pq, int numHits, bool fillFields):base(pq)
+ private TopFieldCollector(PriorityQueue<Entry> pq, int numHits, bool fillFields)
+ : base(pq)
{
this.numHits = numHits;
this.fillFields = fillFields;
@@ -1089,7 +1086,7 @@ namespace Lucene.Net.Search
internal void Add(int slot, int doc, float score)
{
- bottom = (Entry) pq.Add(new Entry(slot, docBase + doc, score));
+ bottom = pq.Add(new Entry(slot, docBase + doc, score));
queueFull = totalHits == numHits;
}
@@ -1106,15 +1103,15 @@ namespace Lucene.Net.Search
FieldValueHitQueue queue = (FieldValueHitQueue) pq;
for (int i = howMany - 1; i >= 0; i--)
{
- results[i] = queue.FillFields((Entry) queue.Pop());
+ results[i] = queue.FillFields(queue.Pop());
}
}
else
{
for (int i = howMany - 1; i >= 0; i--)
{
- Entry entry = (Entry) pq.Pop();
- results[i] = new FieldDoc(entry.docID, entry.score);
+ Entry entry = pq.Pop();
+ results[i] = new FieldDoc(entry.doc, entry.score);
}
}
}
Modified: incubator/lucene.net/branches/Lucene.Net.3.0.3/trunk/src/core/Search/TopScoreDocCollector.cs
URL: http://svn.apache.org/viewvc/incubator/lucene.net/branches/Lucene.Net.3.0.3/trunk/src/core/Search/TopScoreDocCollector.cs?rev=1199962&r1=1199961&r2=1199962&view=diff
==============================================================================
--- incubator/lucene.net/branches/Lucene.Net.3.0.3/trunk/src/core/Search/TopScoreDocCollector.cs (original)
+++ incubator/lucene.net/branches/Lucene.Net.3.0.3/trunk/src/core/Search/TopScoreDocCollector.cs Wed Nov 9 21:03:47 2011
@@ -34,7 +34,7 @@ namespace Lucene.Net.Search
/// collector will not properly collect hits with such
/// scores.
/// </summary>
- public abstract class TopScoreDocCollector:TopDocsCollector
+ public abstract class TopScoreDocCollector : TopDocsCollector<ScoreDoc>
{
// Assumes docs are scored in order.
@@ -62,7 +62,7 @@ namespace Lucene.Net.Search
}
pqTop.doc = doc + docBase;
pqTop.score = score;
- pqTop = (ScoreDoc) pq.UpdateTop();
+ pqTop = pq.UpdateTop();
}
public override bool AcceptsDocsOutOfOrder()
@@ -93,7 +93,7 @@ namespace Lucene.Net.Search
}
pqTop.doc = doc;
pqTop.score = score;
- pqTop = (ScoreDoc) pq.UpdateTop();
+ pqTop = pq.UpdateTop();
}
public override bool AcceptsDocsOutOfOrder()
@@ -133,7 +133,7 @@ namespace Lucene.Net.Search
{
// HitQueue implements getSentinelObject to return a ScoreDoc, so we know
// that at this point top() is already initialized.
- pqTop = (ScoreDoc) pq.Top();
+ pqTop = pq.Top();
}
public /*protected internal*/ override TopDocs NewTopDocs(ScoreDoc[] results, int start)
@@ -158,7 +158,7 @@ namespace Lucene.Net.Search
{
pq.Pop();
}
- maxScore = ((ScoreDoc) pq.Pop()).score;
+ maxScore = pq.Pop().score;
}
return new TopDocs(totalHits, results, maxScore);
Modified: incubator/lucene.net/branches/Lucene.Net.3.0.3/trunk/src/core/Search/WildcardQuery.cs
URL: http://svn.apache.org/viewvc/incubator/lucene.net/branches/Lucene.Net.3.0.3/trunk/src/core/Search/WildcardQuery.cs?rev=1199962&r1=1199961&r2=1199962&view=diff
==============================================================================
--- incubator/lucene.net/branches/Lucene.Net.3.0.3/trunk/src/core/Search/WildcardQuery.cs (original)
+++ incubator/lucene.net/branches/Lucene.Net.3.0.3/trunk/src/core/Search/WildcardQuery.cs Wed Nov 9 21:03:47 2011
@@ -39,35 +39,55 @@ namespace Lucene.Net.Search
/// <seealso cref="WildcardTermEnum">
/// </seealso>
[Serializable]
- public class WildcardQuery:MultiTermQuery
+ public class WildcardQuery : MultiTermQuery
{
private bool termContainsWildcard;
+ private bool termIsPrefix;
new protected internal Term term;
- public WildcardQuery(Term term):base(term)
- { //will be removed in 3.0
+ public WildcardQuery(Term term)
+ {
this.term = term;
- this.termContainsWildcard = (term.Text().IndexOf('*') != - 1) || (term.Text().IndexOf('?') != - 1);
+ string text = term.Text();
+ this.termContainsWildcard = (term.Text().IndexOf('*') != -1)
+ || (term.Text().IndexOf('?') != -1);
+ this.termIsPrefix = termContainsWildcard
+ && (text.IndexOf('?') == -1)
+ && (text.IndexOf('*') == text.Length - 1);
}
public /*protected internal*/ override FilteredTermEnum GetEnum(IndexReader reader)
{
- return new WildcardTermEnum(reader, GetTerm());
+ if (termContainsWildcard)
+ {
+ return new WildcardTermEnum(reader, GetTerm());
+ }
+ else
+ {
+ return new SingleTermEnum(reader, GetTerm());
+ }
}
/// <summary> Returns the pattern term.</summary>
- [Obsolete("Lucene.Net-2.9.1. This method overrides obsolete member Lucene.Net.Search.MultiTermQuery.GetTerm()")]
- public override Term GetTerm()
+ public Term GetTerm()
{
return term;
}
public override Query Rewrite(IndexReader reader)
{
- if (!termContainsWildcard)
- return new TermQuery(GetTerm());
- else
- return base.Rewrite(reader);
+ if (termIsPrefix)
+ {
+ MultiTermQuery rewritten =
+ new PrefixQuery(term.CreateTerm(term.text.Substring(0, term.text.IndexOf('*'))));
+ rewritten.SetBoost(GetBoost());
+ rewritten.SetRewriteMethod(GetRewriteMethod());
+ return rewritten;
+ }
+ else
+ {
+ return base.Rewrite(reader);
+ }
}
/// <summary>Prints a user-readable version of this query. </summary>
Modified: incubator/lucene.net/branches/Lucene.Net.3.0.3/trunk/src/core/Store/CheckSumIndexInput.cs
URL: http://svn.apache.org/viewvc/incubator/lucene.net/branches/Lucene.Net.3.0.3/trunk/src/core/Store/CheckSumIndexInput.cs?rev=1199962&r1=1199961&r2=1199962&view=diff
==============================================================================
--- incubator/lucene.net/branches/Lucene.Net.3.0.3/trunk/src/core/Store/CheckSumIndexInput.cs (original)
+++ incubator/lucene.net/branches/Lucene.Net.3.0.3/trunk/src/core/Store/CheckSumIndexInput.cs Wed Nov 9 21:03:47 2011
@@ -72,12 +72,5 @@ namespace Lucene.Net.Store
{
return main.Length();
}
-
- /*
- override public System.Object Clone()
- {
- return null;
- }
- */
}
}
\ No newline at end of file
Modified: incubator/lucene.net/branches/Lucene.Net.3.0.3/trunk/src/core/Store/Directory.cs
URL: http://svn.apache.org/viewvc/incubator/lucene.net/branches/Lucene.Net.3.0.3/trunk/src/core/Store/Directory.cs?rev=1199962&r1=1199961&r2=1199962&view=diff
==============================================================================
--- incubator/lucene.net/branches/Lucene.Net.3.0.3/trunk/src/core/Store/Directory.cs (original)
+++ incubator/lucene.net/branches/Lucene.Net.3.0.3/trunk/src/core/Store/Directory.cs Wed Nov 9 21:03:47 2011
@@ -48,30 +48,10 @@ namespace Lucene.Net.Store
/// </summary>
[NonSerialized]
protected internal LockFactory lockFactory;
-
- /// <deprecated> For some Directory implementations (<see cref="FSDirectory" />
- ///, and its subclasses), this method
- /// silently filters its results to include only index
- /// files. Please use <see cref="ListAll" /> instead, which
- /// does no filtering.
- /// </deprecated>
- [Obsolete("For some Directory implementations (FSDirectory}, and its subclasses), this method silently filters its results to include only index files. Please use ListAll instead, which does no filtering. ")]
- public abstract System.String[] List();
-
- /// <summary>Returns an array of strings, one for each file in the
- /// directory. Unlike <see cref="List" /> this method does no
- /// filtering of the contents in a directory, and it will
- /// never return null (throws IOException instead).
- ///
- /// Currently this method simply fallsback to <see cref="List" />
- /// for Directory impls outside of Lucene's core &
- /// contrib, but in 3.0 that method will be removed and
- /// this method will become abstract.
- /// </summary>
- public virtual System.String[] ListAll()
- {
- return List();
- }
+
+ /// <summary>Returns an array of strings, one for each file in the directory.</summary>
+ /// <exception cref="System.IO.IOException"></exception>
+ public abstract System.String[] ListAll();
/// <summary>Returns true iff a file with the given name exists. </summary>
public abstract bool FileExists(System.String name);
@@ -85,15 +65,6 @@ namespace Lucene.Net.Store
/// <summary>Removes an existing file in the directory. </summary>
public abstract void DeleteFile(System.String name);
- /// <summary>Renames an existing file in the directory.
- /// If a file already exists with the new name, then it is replaced.
- /// This replacement is not guaranteed to be atomic.
- /// </summary>
- /// <deprecated>
- /// </deprecated>
- [Obsolete]
- public abstract void RenameFile(System.String from, System.String to);
-
/// <summary>Returns the length of a file in the directory. </summary>
public abstract long FileLength(System.String name);
@@ -164,6 +135,7 @@ namespace Lucene.Net.Store
/// </param>
public virtual void SetLockFactory(LockFactory lockFactory)
{
+ System.Diagnostics.Debug.Assert(this.lockFactory != null);
this.lockFactory = lockFactory;
lockFactory.SetLockPrefix(this.GetLockID());
}
Modified: incubator/lucene.net/branches/Lucene.Net.3.0.3/trunk/src/core/Store/FSDirectory.cs
URL: http://svn.apache.org/viewvc/incubator/lucene.net/branches/Lucene.Net.3.0.3/trunk/src/core/Store/FSDirectory.cs?rev=1199962&r1=1199961&r2=1199962&view=diff
==============================================================================
--- incubator/lucene.net/branches/Lucene.Net.3.0.3/trunk/src/core/Store/FSDirectory.cs (original)
+++ incubator/lucene.net/branches/Lucene.Net.3.0.3/trunk/src/core/Store/FSDirectory.cs Wed Nov 9 21:03:47 2011
@@ -98,333 +98,23 @@ namespace Lucene.Net.Store
/// <p/>The locking implementation is by default <see cref="NativeFSLockFactory" />
///, but can be changed by
/// passing in a custom <see cref="LockFactory" /> instance.
- /// The deprecated <c>getDirectory</c> methods default to use
- /// <see cref="SimpleFSLockFactory" /> for backwards compatibility.
- /// The system properties
- /// <c>org.apache.lucene.store.FSDirectoryLockFactoryClass</c>
- /// and <c>org.apache.lucene.FSDirectory.class</c>
- /// are deprecated and only used by the deprecated
- /// <c>getDirectory</c> methods. The system property
- /// <c>org.apache.lucene.lockDir</c> is ignored completely,
- /// If you really want to store locks
- /// elsewhere, you can create your own <see cref="SimpleFSLockFactory" />
- /// (or <see cref="NativeFSLockFactory" />,
- /// etc.) passing in your preferred lock directory.
- ///
- /// <p/><em>In 3.0 this class will become abstract.</em>
- ///
/// </summary>
- /// <seealso cref="Directory">
- /// </seealso>
- // TODO: in 3.0 this will become an abstract base class
- public class FSDirectory:Directory
+ public abstract class FSDirectory : Directory
{
-
- /// <summary>This cache of directories ensures that there is a unique Directory
- /// instance per path, so that synchronization on the Directory can be used to
- /// synchronize access between readers and writers. We use
- /// refcounts to ensure when the last use of an FSDirectory
- /// instance for a given canonical path is closed, we remove the
- /// instance from the cache. See LUCENE-776
- /// for some relevant discussion.
- /// </summary>
- /// <deprecated> Not used by any non-deprecated methods anymore
- /// </deprecated>
- [Obsolete("Not used by any non-deprecated methods anymore")]
- private static readonly Dictionary<string, FSDirectory> DIRECTORIES = new Dictionary<string, FSDirectory>();
-
- private static bool disableLocks = false;
-
- // TODO: should this move up to the Directory base class? Also: should we
- // make a per-instance (in addition to the static "default") version?
-
- /// <summary> Set whether Lucene's use of lock files is disabled. By default,
- /// lock files are enabled. They should only be disabled if the index
- /// is on a read-only medium like a CD-ROM.
- /// </summary>
- /// <deprecated> Use a <see cref="Open(System.IO.DirectoryInfo, LockFactory)" /> or a constructor
- /// that takes a <see cref="LockFactory" /> and supply
- /// <see cref="NoLockFactory.GetNoLockFactory" />. This setting does not work
- /// with <see cref="Open(System.IO.DirectoryInfo)" /> only the deprecated <c>getDirectory</c>
- /// respect this setting.
- /// </deprecated>
- [Obsolete("Use a Open(System.IO.DirectoryInfo, LockFactory) or a constructor that takes a LockFactory and supply NoLockFactory.GetNoLockFactory. This setting does not work with Open(File) only the deprecated GetDirectory respect this setting.")]
- public static void SetDisableLocks(bool doDisableLocks)
- {
- FSDirectory.disableLocks = doDisableLocks;
- }
-
- /// <summary> Returns whether Lucene's use of lock files is disabled.</summary>
- /// <returns> true if locks are disabled, false if locks are enabled.
- /// </returns>
- /// <seealso cref="SetDisableLocks">
- /// </seealso>
- /// <deprecated> Use a constructor that takes a <see cref="LockFactory" /> and
- /// supply <see cref="NoLockFactory.GetNoLockFactory" />.
- /// </deprecated>
- [Obsolete("Use a constructor that takes a LockFactory and supply NoLockFactory.GetNoLockFactory.")]
- public static bool GetDisableLocks()
- {
- return FSDirectory.disableLocks;
- }
-
- ///// <summary> Directory specified by <c>org.apache.lucene.lockDir</c>
- ///// or <c>java.io.tmpdir</c> system property.
- ///// </summary>
- ///// <deprecated> As of 2.1, <c>LOCK_DIR</c> is unused
- ///// because the write.lock is now stored by default in the
- ///// index directory. If you really want to store locks
- ///// elsewhere, you can create your own <see cref="// SimpleFSLockFactory" />
- ///// (or <see cref="NativeFSLockFactory" />,
- ///// etc.) passing in your preferred lock directory. Then,
- ///// pass this <c>LockFactory</c> instance to one of
- ///// the <c>open</c> methods that take a
- ///// <c>lockFactory</c> (for example, <see cref="Open(System.IO.DirectoryInfo, LockFactory)" />).
- ///// </deprecated>
- //[Obsolete("As of 2.1, LOCK_DIR is unused because the write.lock is now stored by default in the index directory. ")]
- //public static readonly System.String LOCK_DIR = SupportClass.AppSettings.Get("Lucene.Net.lockDir", System.IO.Path.GetTempPath());
-
- /// <summary>The default class which implements filesystem-based directories. </summary>
- // deprecated
- [Obsolete]
- private static readonly System.Type IMPL = typeof(Lucene.Net.Store.SimpleFSDirectory);
-
private static System.Security.Cryptography.HashAlgorithm DIGESTER;
-
- /// <summary>A buffer optionally used in renameTo method </summary>
- private byte[] buffer = null;
-
-
- /// <summary>Returns the directory instance for the named location.
- ///
- /// </summary>
- /// <deprecated> Use <see cref="Open(System.IO.DirectoryInfo)" />
- ///
- /// </deprecated>
- /// <param name="path">the path to the directory.
- /// </param>
- /// <returns> the FSDirectory for the named file.
- /// </returns>
- [Obsolete("Use Open(System.IO.DirectoryInfo)")]
- public static FSDirectory GetDirectory(System.String path)
- {
- return GetDirectory(new System.IO.DirectoryInfo(path), null);
- }
-
- /// <summary>Returns the directory instance for the named location.
- ///
- /// </summary>
- /// <deprecated> Use <see cref="Open(System.IO.DirectoryInfo, LockFactory)" />
- ///
- /// </deprecated>
- /// <param name="path">the path to the directory.
- /// </param>
- /// <param name="lockFactory">instance of <see cref="LockFactory" /> providing the
- /// locking implementation.
- /// </param>
- /// <returns> the FSDirectory for the named file.
- /// </returns>
- [Obsolete("Use Open(File, LockFactory)")]
- public static FSDirectory GetDirectory(System.String path, LockFactory lockFactory)
- {
- return GetDirectory(new System.IO.DirectoryInfo(path), lockFactory);
- }
-
- /// <summary>Returns the directory instance for the named location.
- ///
- /// </summary>
- /// <deprecated> Use <see cref="Open(System.IO.DirectoryInfo)" />
- ///
- /// </deprecated>
- /// <param name="file">the path to the directory.
- /// </param>
- /// <returns> the FSDirectory for the named file.
- /// </returns>
- [Obsolete("Use Open(File)")]
- public static FSDirectory GetDirectory(System.IO.DirectoryInfo file)
- {
- return GetDirectory(file, null);
- }
-
- /// <summary>Returns the directory instance for the named location.
- ///
- /// </summary>
- /// <deprecated> Use <see cref="Open(System.IO.DirectoryInfo)" />
- ///
- /// </deprecated>
- /// <param name="file">the path to the directory.
- /// </param>
- /// <returns> the FSDirectory for the named file.
- /// </returns>
- [System.Obsolete("Use the constructor that takes a DirectoryInfo, this will be removed in the 3.0 release")]
- public static FSDirectory GetDirectory(System.IO.FileInfo file)
- {
- return GetDirectory(new System.IO.DirectoryInfo(file.FullName), null);
- }
-
- /// <summary>Returns the directory instance for the named location.
- ///
- /// </summary>
- /// <deprecated> Use <see cref="Open(System.IO.DirectoryInfo, LockFactory)" />
- ///
- /// </deprecated>
- /// <param name="file">the path to the directory.
- /// </param>
- /// <param name="lockFactory">instance of <see cref="LockFactory" /> providing the
- /// locking implementation.
- /// </param>
- /// <returns> the FSDirectory for the named file.
- /// </returns>
- [System.Obsolete("Use the constructor that takes a DirectoryInfo, this will be removed in the 3.0 release")]
- public static FSDirectory GetDirectory(System.IO.FileInfo file, LockFactory lockFactory)
- {
- return GetDirectory(new System.IO.DirectoryInfo(file.FullName), lockFactory);
- }
- /// <summary>Returns the directory instance for the named location.
- ///
- /// </summary>
- /// <deprecated> Use <see cref="Open(System.IO.DirectoryInfo, LockFactory)" />
- ///
- /// </deprecated>
- /// <param name="file">the path to the directory.
- /// </param>
- /// <param name="lockFactory">instance of <see cref="LockFactory" /> providing the
- /// locking implementation.
- /// </param>
- /// <returns> the FSDirectory for the named file.
- /// </returns>
- [Obsolete("Use Open(File, LockFactory)")]
- public static FSDirectory GetDirectory(System.IO.DirectoryInfo file, LockFactory lockFactory)
+ static FSDirectory()
{
- FSDirectory dir;
- lock (DIRECTORIES)
+ try
{
- if(!DIRECTORIES.TryGetValue(file.FullName, out dir))
- {
- try
- {
- dir = (FSDirectory)System.Activator.CreateInstance(IMPL, true);
- }
- catch (System.Exception e)
- {
- throw new System.SystemException("cannot load FSDirectory class: " + e.ToString(), e);
- }
- dir.Init(file, lockFactory);
- DIRECTORIES.Add(file.FullName, dir);
- }
- else
- {
- // Catch the case where a Directory is pulled from the cache, but has a
- // different LockFactory instance.
- if (lockFactory != null && lockFactory != dir.GetLockFactory())
- {
- throw new System.IO.IOException("Directory was previously created with a different LockFactory instance; please pass null as the lockFactory instance and use setLockFactory to change it");
- }
- dir.checked_Renamed = false;
- }
+ DIGESTER = SupportClass.Cryptography.GetHashAlgorithm();
}
- lock (dir)
+ catch (System.Exception e)
{
- dir.refCount++;
+ throw new System.SystemException(e.ToString(), e);
}
- return dir;
}
-
- /// <summary>Returns the directory instance for the named location.
- ///
- /// </summary>
- /// <deprecated> Use IndexWriter's create flag, instead, to
- /// create a new index.
- ///
- /// </deprecated>
- /// <param name="path">the path to the directory.
- /// </param>
- /// <param name="create">if true, create, or erase any existing contents.
- /// </param>
- /// <returns> the FSDirectory for the named file.
- /// </returns>
- [Obsolete("Use IndexWriter's create flag, instead, to create a new index.")]
- public static FSDirectory GetDirectory(System.String path, bool create)
- {
- return GetDirectory(new System.IO.DirectoryInfo(path), create);
- }
-
- /// <summary>Returns the directory instance for the named location.
- ///
- /// </summary>
- /// <deprecated> Use IndexWriter's create flag, instead, to
- /// create a new index.
- ///
- /// </deprecated>
- /// <param name="file">the path to the directory.
- /// </param>
- /// <param name="create">if true, create, or erase any existing contents.
- /// </param>
- /// <returns> the FSDirectory for the named file.
- /// </returns>
- [System.Obsolete("Use the method that takes a DirectoryInfo, this will be removed in the 3.0 release")]
- public static FSDirectory GetDirectory(System.IO.FileInfo file, bool create)
- {
- return GetDirectory(new System.IO.DirectoryInfo(file.FullName), create);
- }
-
- /// <summary>Returns the directory instance for the named location.
- ///
- /// </summary>
- /// <deprecated> Use IndexWriter's create flag, instead, to
- /// create a new index.
- ///
- /// </deprecated>
- /// <param name="file">the path to the directory.
- /// </param>
- /// <param name="create">if true, create, or erase any existing contents.
- /// </param>
- /// <returns> the FSDirectory for the named file.
- /// </returns>
- [Obsolete("Use IndexWriter's create flag, instead, to create a new index.")]
- public static FSDirectory GetDirectory(System.IO.DirectoryInfo file, bool create)
- {
- FSDirectory dir = GetDirectory(file, null);
-
- // This is now deprecated (creation should only be done
- // by IndexWriter):
- if (create)
- {
- dir.Create();
- }
-
- return dir;
- }
-
- /// <deprecated>
- /// </deprecated>
- [Obsolete]
- private void Create()
- {
- if (directory.Exists)
- {
- System.String[] files = SupportClass.FileSupport.GetLuceneIndexFiles(directory.FullName, IndexFileNameFilter.GetFilter()); // clear old files
- if (files == null)
- throw new System.IO.IOException("cannot read directory " + directory.FullName + ": list() returned null");
- for (int i = 0; i < files.Length; i++)
- {
- System.String fileOrDir = System.IO.Path.Combine(directory.FullName, files[i]);
- if (System.IO.File.Exists(fileOrDir))
- {
- System.IO.File.Delete(fileOrDir);
- }
- else if (System.IO.Directory.Exists(fileOrDir))
- {
- System.IO.Directory.Delete(fileOrDir);
- }
- // no need to throw anything - if a delete fails the exc will propogate to the caller
- }
- }
- lockFactory.ClearLock(IndexWriter.WRITE_LOCK_NAME);
- }
-
private bool checked_Renamed;
internal void CreateDir()
@@ -472,19 +162,6 @@ namespace Lucene.Net.Store
/// <summary>The underlying filesystem directory </summary>
protected internal System.IO.DirectoryInfo directory = null;
- /// <deprecated>
- /// </deprecated>
- [Obsolete]
- private int refCount = 0;
-
- /// <deprecated>
- /// </deprecated>
- [Obsolete]
- protected internal FSDirectory()
- {
- }
- // permit subclassing
-
/// <summary>Create a new FSDirectory for the named location (ctor for subclasses).</summary>
/// <param name="path">the path of the directory
/// </param>
@@ -499,38 +176,37 @@ namespace Lucene.Net.Store
{
lockFactory = new NativeFSLockFactory();
}
- Init(path, lockFactory);
- refCount = 1;
- }
-
- /// <summary>Creates an FSDirectory instance, trying to pick the
- /// best implementation given the current environment.
- /// The directory returned uses the <see cref="NativeFSLockFactory" />.
- ///
- /// <p/>Currently this returns <see cref="SimpleFSDirectory" /> as
- /// NIOFSDirectory is currently not supported.
- ///
- /// <p/>Currently this returns <see cref="SimpleFSDirectory" /> as
- /// NIOFSDirectory is currently not supported.
- ///
- /// <p/><b>NOTE</b>: this method may suddenly change which
- /// implementation is returned from release to release, in
- /// the event that higher performance defaults become
- /// possible; if the precise implementation is important to
- /// your application, please instantiate it directly,
- /// instead. On 64 bit systems, it may also good to
- /// return <see cref="MMapDirectory" />, but this is disabled
- /// because of officially missing unmap support in Java.
- /// For optimal performance you should consider using
- /// this implementation on 64 bit JVMs.
- ///
- /// <p/>See <a href="#subclasses">above</a>
- /// </summary>
- [System.Obsolete("Use the method that takes a DirectoryInfo, this will be removed in the 3.0 release")]
- public static FSDirectory Open(System.IO.FileInfo path)
- {
- System.IO.DirectoryInfo dir = new System.IO.DirectoryInfo(path.FullName);
- return Open(dir, null);
+ // Set up lockFactory with cascaded defaults: if an instance was passed in,
+ // use that; else if locks are disabled, use NoLockFactory; else if the
+ // system property Lucene.Net.Store.FSDirectoryLockFactoryClass is set,
+ // instantiate that; else, use SimpleFSLockFactory:
+
+ directory = path;
+
+ // due to differences in how Java & .NET refer to files, the checks are a bit different
+ if (!directory.Exists && System.IO.File.Exists(directory.FullName))
+ {
+ throw new NoSuchDirectoryException("file '" + directory.FullName + "' exists but is not a directory");
+ }
+ SetLockFactory(lockFactory);
+
+ // for filesystem based LockFactory, delete the lockPrefix, if the locks are placed
+ // in index dir. If no index dir is given, set ourselves
+ if (lockFactory is FSLockFactory)
+ {
+ FSLockFactory lf = (FSLockFactory)lockFactory;
+ System.IO.DirectoryInfo dir = lf.GetLockDir();
+ // if the lock factory has no lockDir set, use the this directory as lockDir
+ if (dir == null)
+ {
+ lf.SetLockDir(this.directory);
+ lf.SetLockPrefix(null);
+ }
+ else if (dir.FullName.Equals(this.directory.FullName))
+ {
+ lf.SetLockPrefix(null);
+ }
+ }
}
/// <summary>Creates an FSDirectory instance, trying to pick the
@@ -581,111 +257,6 @@ namespace Lucene.Net.Store
}
}
- /* will move to ctor, when reflection is removed in 3.0 */
- private void Init(System.IO.DirectoryInfo path, LockFactory lockFactory)
- {
-
- // Set up lockFactory with cascaded defaults: if an instance was passed in,
- // use that; else if locks are disabled, use NoLockFactory; else if the
- // system property Lucene.Net.Store.FSDirectoryLockFactoryClass is set,
- // instantiate that; else, use SimpleFSLockFactory:
-
- directory = path;
-
- // due to differences in how Java & .NET refer to files, the checks are a bit different
- if (!directory.Exists && System.IO.File.Exists(directory.FullName))
- {
- throw new NoSuchDirectoryException("file '" + directory.FullName + "' exists but is not a directory");
- }
-
- if (lockFactory == null)
- {
-
- if (disableLocks)
- {
- // Locks are disabled:
- lockFactory = NoLockFactory.GetNoLockFactory();
- }
- else
- {
- System.String lockClassName = SupportClass.AppSettings.Get("Lucene.Net.Store.FSDirectoryLockFactoryClass", "");
-
- if (lockClassName != null && !lockClassName.Equals(""))
- {
- System.Type c;
-
- try
- {
- c = System.Type.GetType(lockClassName);
- }
- catch (System.Exception e)
- {
- throw new System.IO.IOException("unable to find LockClass " + lockClassName);
- }
-
- try
- {
- lockFactory = (LockFactory) System.Activator.CreateInstance(c, true);
- }
- catch (System.UnauthorizedAccessException e)
- {
- throw new System.IO.IOException("IllegalAccessException when instantiating LockClass " + lockClassName);
- }
- catch (System.InvalidCastException e)
- {
- throw new System.IO.IOException("unable to cast LockClass " + lockClassName + " instance to a LockFactory");
- }
- catch (System.Exception e)
- {
- throw new System.IO.IOException("InstantiationException when instantiating LockClass " + lockClassName);
- }
- }
- else
- {
- // Our default lock is SimpleFSLockFactory;
- // default lockDir is our index directory:
- lockFactory = new SimpleFSLockFactory();
- }
- }
- }
-
- SetLockFactory(lockFactory);
-
- // for filesystem based LockFactory, delete the lockPrefix, if the locks are placed
- // in index dir. If no index dir is given, set ourselves
- if (lockFactory is FSLockFactory)
- {
- FSLockFactory lf = (FSLockFactory) lockFactory;
- System.IO.DirectoryInfo dir = lf.GetLockDir();
- // if the lock factory has no lockDir set, use the this directory as lockDir
- if (dir == null)
- {
- lf.SetLockDir(this.directory);
- lf.SetLockPrefix(null);
- }
- else if (dir.FullName.Equals(this.directory.FullName))
- {
- lf.SetLockPrefix(null);
- }
- }
- }
-
- /// <summary>Lists all files (not subdirectories) in the
- /// directory. This method never returns null (throws
- /// <see cref="System.IO.IOException" /> instead).
- ///
- /// </summary>
- /// <throws> NoSuchDirectoryException if the directory </throws>
- /// <summary> does not exist, or does exist but is not a
- /// directory.
- /// </summary>
- /// <throws> IOException if list() returns null </throws>
- [System.Obsolete("Use the method that takes a DirectoryInfo, this will be removed in the 3.0 release")]
- public static System.String[] ListAll(System.IO.FileInfo dir)
- {
- return ListAll(new System.IO.DirectoryInfo(dir.FullName));
- }
-
/// <summary>Lists all files (not subdirectories) in the
/// directory. This method never returns null (throws
/// <see cref="System.IO.IOException" /> instead).
@@ -702,6 +273,11 @@ namespace Lucene.Net.Store
{
throw new NoSuchDirectoryException("directory '" + dir.FullName + "' does not exist");
}
+ else if (System.IO.File.Exists(dir.FullName))
+ {
+ throw new NoSuchDirectoryException("File '" + dir.FullName + "' does not exist");
+ }
+
// Exclude subdirs, only the file names, not the paths
System.IO.FileInfo[] files = dir.GetFiles();
System.String[] result = new System.String[files.Length];
@@ -717,13 +293,6 @@ namespace Lucene.Net.Store
return result;
}
- [Obsolete("Lucene.Net-2.9.1. This method overrides obsolete member Lucene.Net.Store.Directory.List()")]
- public override System.String[] List()
- {
- EnsureOpen();
- return SupportClass.FileSupport.GetLuceneIndexFiles(directory.FullName, IndexFileNameFilter.GetFilter());
- }
-
/// <summary>Lists all files (not subdirectories) in the
/// directory.
/// </summary>
@@ -789,39 +358,6 @@ namespace Lucene.Net.Store
}
}
- /// <summary>Renames an existing file in the directory.
- /// Warning: This is not atomic.
- /// </summary>
- /// <deprecated>
- /// </deprecated>
- [Obsolete]
- public override void RenameFile(System.String from, System.String to)
- {
- lock (this)
- {
- EnsureOpen();
- System.IO.FileInfo old = new System.IO.FileInfo(System.IO.Path.Combine(directory.FullName, from));
- try
- {
- old.MoveTo(System.IO.Path.Combine(directory.FullName, to));
- }
- catch (System.IO.IOException ioe)
- {
- System.IO.IOException newExc = new System.IO.IOException("Cannot rename " + old + " to " + directory, ioe);
- throw newExc;
- }
- }
- }
-
- /// <summary>Creates an IndexOutput for the file with the given name.
- /// <em>In 3.0 this method will become abstract.</em>
- /// </summary>
- public override IndexOutput CreateOutput(System.String name)
- {
- InitOutput(name);
- return new FSIndexOutput(new System.IO.FileInfo(System.IO.Path.Combine(directory.FullName, name)));
- }
-
public override void Sync(System.String name)
{
EnsureOpen();
@@ -860,6 +396,7 @@ namespace Lucene.Net.Store
{
// In 3.0 we will change this to throw
// InterruptedException instead
+ // TODO: Change this to throwing a new ThreadInterruptedException when class is build
SupportClass.ThreadClass.Current().Interrupt();
throw new System.SystemException(ie.ToString(), ie);
}
@@ -877,15 +414,6 @@ namespace Lucene.Net.Store
return OpenInput(name, BufferedIndexInput.BUFFER_SIZE);
}
- /// <summary>Creates an IndexInput for the file with the given name.
- /// <em>In 3.0 this method will become abstract.</em>
- /// </summary>
- public override IndexInput OpenInput(System.String name, int bufferSize)
- {
- EnsureOpen();
- return new FSIndexInput(new System.IO.FileInfo(System.IO.Path.Combine(directory.FullName, name)), bufferSize);
- }
-
/// <summary> So we can do some byte-to-hexchar conversion below</summary>
private static readonly char[] HEX_DIGITS = new char[]{'0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'a', 'b', 'c', 'd', 'e', 'f'};
@@ -925,14 +453,7 @@ namespace Lucene.Net.Store
{
lock (this)
{
- if (isOpen && --refCount <= 0)
- {
- isOpen = false;
- lock (DIRECTORIES)
- {
- DIRECTORIES.Remove(directory.FullName);
- }
- }
+ isOpen = false;
}
}
@@ -944,14 +465,6 @@ namespace Lucene.Net.Store
Close();
}
- [System.Obsolete("A DirectoryInfo is more appropriate, however this is here for backwards compatibility. This will be removed in the 3.0 release")]
- public virtual System.IO.FileInfo GetFile()
- {
- EnsureOpen();
- return new System.IO.FileInfo(directory.FullName);
- }
-
-
// Java Lucene implements GetFile() which returns a FileInfo.
// For Lucene.Net, GetDirectory() is more appropriate
public virtual System.IO.DirectoryInfo GetDirectory()
@@ -1021,91 +534,5 @@ namespace Lucene.Net.Store
// LUCENE-1566
return chunkSize;
}
-
-
- /// <deprecated> Use SimpleFSDirectory.SimpleFSIndexInput instead
- /// </deprecated>
- [Obsolete("Use SimpleFSDirectory.SimpleFSIndexInput instead ")]
- public /*protected internal*/ class FSIndexInput:SimpleFSDirectory.SimpleFSIndexInput
- {
-
- /// <deprecated>
- /// </deprecated>
- [Obsolete]
- new protected internal class Descriptor:SimpleFSDirectory.SimpleFSIndexInput.Descriptor
- {
- /// <deprecated>
- /// </deprecated>
- [Obsolete]
- public Descriptor(/*FSIndexInput enclosingInstance,*/ System.IO.FileInfo file, System.IO.FileAccess mode) : base(file, mode)
- {
- }
- }
-
- /// <deprecated>
- /// </deprecated>
- [Obsolete]
- public FSIndexInput(System.IO.FileInfo path):base(path)
- {
- }
-
- /// <deprecated>
- /// </deprecated>
- [Obsolete]
- public FSIndexInput(System.IO.FileInfo path, int bufferSize):base(path, bufferSize)
- {
- }
- }
-
- /// <deprecated> Use SimpleFSDirectory.SimpleFSIndexOutput instead
- /// </deprecated>
- [Obsolete("Use SimpleFSDirectory.SimpleFSIndexOutput instead ")]
- protected internal class FSIndexOutput:SimpleFSDirectory.SimpleFSIndexOutput
- {
-
- /// <deprecated>
- /// </deprecated>
- [Obsolete]
- public FSIndexOutput(System.IO.FileInfo path):base(path)
- {
- }
- }
- static FSDirectory()
- {
- {
- try
- {
- System.String name = SupportClass.AppSettings.Get("Lucene.Net.FSDirectory.class", typeof(SimpleFSDirectory).FullName);
- if (typeof(FSDirectory).FullName.Equals(name))
- {
- // FSDirectory will be abstract, so we replace it by the correct class
- IMPL = typeof(SimpleFSDirectory);
- }
- else
- {
- IMPL = System.Type.GetType(name);
- }
- }
- catch (System.Security.SecurityException se)
- {
- IMPL = typeof(SimpleFSDirectory);
- }
- catch (System.Exception e)
- {
- throw new System.SystemException("cannot load FSDirectory class: " + e.ToString(), e);
- }
- }
- {
- try
- {
- DIGESTER = SupportClass.Cryptography.GetHashAlgorithm();
- }
- catch (System.Exception e)
- {
- throw new System.SystemException(e.ToString(), e);
- }
- }
- DEFAULT_READ_CHUNK_SIZE = Constants.JRE_IS_64BIT?System.Int32.MaxValue:100 * 1024 * 1024;
- }
}
}
\ No newline at end of file
Modified: incubator/lucene.net/branches/Lucene.Net.3.0.3/trunk/src/core/Store/FileSwitchDirectory.cs
URL: http://svn.apache.org/viewvc/incubator/lucene.net/branches/Lucene.Net.3.0.3/trunk/src/core/Store/FileSwitchDirectory.cs?rev=1199962&r1=1199961&r2=1199962&view=diff
==============================================================================
--- incubator/lucene.net/branches/Lucene.Net.3.0.3/trunk/src/core/Store/FileSwitchDirectory.cs (original)
+++ incubator/lucene.net/branches/Lucene.Net.3.0.3/trunk/src/core/Store/FileSwitchDirectory.cs Wed Nov 9 21:03:47 2011
@@ -36,10 +36,13 @@ namespace Lucene.Net.Store
{
private Directory secondaryDir;
private Directory primaryDir;
- private System.Collections.Hashtable primaryExtensions;
+ private System.Collections.Generic.HashSet<string> primaryExtensions;
private bool doClose;
- public FileSwitchDirectory(System.Collections.Hashtable primaryExtensions, Directory primaryDir, Directory secondaryDir, bool doClose)
+ public FileSwitchDirectory(System.Collections.Generic.HashSet<string> primaryExtensions,
+ Directory primaryDir,
+ Directory secondaryDir,
+ bool doClose)
{
this.primaryExtensions = primaryExtensions;
this.primaryDir = primaryDir;
@@ -86,17 +89,11 @@ namespace Lucene.Net.Store
public override System.String[] ListAll()
{
- System.Collections.Generic.List<string> files = new System.Collections.Generic.List<string>();
+ var files = new System.Collections.Generic.List<string>();
files.AddRange(primaryDir.ListAll());
files.AddRange(secondaryDir.ListAll());
return files.ToArray();
}
-
- [Obsolete("Lucene.Net-2.9.1. This method overrides obsolete member Lucene.Net.Store.Directory.List()")]
- public override System.String[] List()
- {
- return ListAll();
- }
/// <summary>Utility method to return a file's extension. </summary>
public static System.String GetExtension(System.String name)
@@ -141,12 +138,6 @@ namespace Lucene.Net.Store
{
GetDirectory(name).DeleteFile(name);
}
-
- [Obsolete("Lucene.Net-2.9.1. This method overrides obsolete member Lucene.Net.Store.Directory.RenameFile(string, string)")]
- public override void RenameFile(System.String from, System.String to)
- {
- GetDirectory(from).RenameFile(from, to);
- }
public override long FileLength(System.String name)
{
Modified: incubator/lucene.net/branches/Lucene.Net.3.0.3/trunk/src/core/Store/IndexInput.cs
URL: http://svn.apache.org/viewvc/incubator/lucene.net/branches/Lucene.Net.3.0.3/trunk/src/core/Store/IndexInput.cs?rev=1199962&r1=1199961&r2=1199962&view=diff
==============================================================================
--- incubator/lucene.net/branches/Lucene.Net.3.0.3/trunk/src/core/Store/IndexInput.cs (original)
+++ incubator/lucene.net/branches/Lucene.Net.3.0.3/trunk/src/core/Store/IndexInput.cs Wed Nov 9 21:03:47 2011
@@ -25,7 +25,7 @@ namespace Lucene.Net.Store
/// </summary>
/// <seealso cref="Directory">
/// </seealso>
- public abstract class IndexInput : System.ICloneable
+ public abstract class IndexInput : System.ICloneable/*, IDisposable*/
{
private bool preUTF8Strings; // true if we are reading old (modified UTF8) string format
@@ -273,5 +273,7 @@ namespace Lucene.Net.Store
return map;
}
+
+ /*public abstract void Dispose();*/
}
}
\ No newline at end of file
Modified: incubator/lucene.net/branches/Lucene.Net.3.0.3/trunk/src/core/Store/IndexOutput.cs
URL: http://svn.apache.org/viewvc/incubator/lucene.net/branches/Lucene.Net.3.0.3/trunk/src/core/Store/IndexOutput.cs?rev=1199962&r1=1199961&r2=1199962&view=diff
==============================================================================
--- incubator/lucene.net/branches/Lucene.Net.3.0.3/trunk/src/core/Store/IndexOutput.cs (original)
+++ incubator/lucene.net/branches/Lucene.Net.3.0.3/trunk/src/core/Store/IndexOutput.cs Wed Nov 9 21:03:47 2011
@@ -29,7 +29,7 @@ namespace Lucene.Net.Store
/// </seealso>
/// <seealso cref="IndexInput">
/// </seealso>
- public abstract class IndexOutput
+ public abstract class IndexOutput /*: IDisposable*/
{
/// <summary>Writes a single byte.</summary>
/// <seealso cref="IndexInput.ReadByte()">
@@ -262,10 +262,10 @@ namespace Lucene.Net.Store
else
{
WriteInt(map.Count);
- foreach (string key in map.Keys)
+ foreach (var entry in map)
{
- WriteString(key);
- WriteString(map[key]);
+ WriteString(entry.Key);
+ WriteString(entry.Value);
}
}
}
Modified: incubator/lucene.net/branches/Lucene.Net.3.0.3/trunk/src/core/Store/Lock.cs
URL: http://svn.apache.org/viewvc/incubator/lucene.net/branches/Lucene.Net.3.0.3/trunk/src/core/Store/Lock.cs?rev=1199962&r1=1199961&r2=1199962&view=diff
==============================================================================
--- incubator/lucene.net/branches/Lucene.Net.3.0.3/trunk/src/core/Store/Lock.cs (original)
+++ incubator/lucene.net/branches/Lucene.Net.3.0.3/trunk/src/core/Store/Lock.cs Wed Nov 9 21:03:47 2011
@@ -28,13 +28,8 @@ namespace Lucene.Net.Store
/// }
/// }.run();
/// </code>
- ///
- ///
/// </summary>
- /// <version> $Id: Lock.java 769409 2009-04-28 14:05:43Z mikemccand $
- /// </version>
- /// <seealso cref="Directory.MakeLock(String)">
- /// </seealso>
+ /// <seealso cref="Directory.MakeLock(String)" />
public abstract class Lock
{
@@ -114,6 +109,7 @@ namespace Lucene.Net.Store
{
// In 3.0 we will change this to throw
// InterruptedException instead
+ // TODO: Revisit rewriting in ThreadInterruptedException
SupportClass.ThreadClass.Current().Interrupt();
throw new System.IO.IOException(e.ToString());
}
Modified: incubator/lucene.net/branches/Lucene.Net.3.0.3/trunk/src/core/Store/MMapDirectory.cs
URL: http://svn.apache.org/viewvc/incubator/lucene.net/branches/Lucene.Net.3.0.3/trunk/src/core/Store/MMapDirectory.cs?rev=1199962&r1=1199961&r2=1199962&view=diff
==============================================================================
--- incubator/lucene.net/branches/Lucene.Net.3.0.3/trunk/src/core/Store/MMapDirectory.cs (original)
+++ incubator/lucene.net/branches/Lucene.Net.3.0.3/trunk/src/core/Store/MMapDirectory.cs Wed Nov 9 21:03:47 2011
@@ -154,15 +154,6 @@ namespace Lucene.Net.Store
InitBlock();
}
- // back compatibility so FSDirectory can instantiate via reflection
- /// <deprecated>
- /// </deprecated>
- [Obsolete]
- internal MMapDirectory()
- {
- InitBlock();
- }
-
internal static readonly System.Type[] NO_PARAM_TYPES = new System.Type[0];
internal static readonly System.Object[] NO_PARAMS = new System.Object[0];
Modified: incubator/lucene.net/branches/Lucene.Net.3.0.3/trunk/src/core/Store/NIOFSDirectory.cs
URL: http://svn.apache.org/viewvc/incubator/lucene.net/branches/Lucene.Net.3.0.3/trunk/src/core/Store/NIOFSDirectory.cs?rev=1199962&r1=1199961&r2=1199962&view=diff
==============================================================================
--- incubator/lucene.net/branches/Lucene.Net.3.0.3/trunk/src/core/Store/NIOFSDirectory.cs (original)
+++ incubator/lucene.net/branches/Lucene.Net.3.0.3/trunk/src/core/Store/NIOFSDirectory.cs Wed Nov 9 21:03:47 2011
@@ -23,13 +23,10 @@ namespace Lucene.Net.Store
/// </summary>
public class NIOFSDirectory : Lucene.Net.Store.FSDirectory
{
- public NIOFSDirectory()
+ public NIOFSDirectory(System.IO.DirectoryInfo dir, LockFactory lockFactory)
+ : base(dir, lockFactory)
{
throw new System.NotImplementedException("Waiting for volunteers to implement this class");
-
- }
- public NIOFSDirectory(System.IO.DirectoryInfo dir,LockFactory lockFactory)
- {
}
/// <summary>
@@ -42,6 +39,11 @@ namespace Lucene.Net.Store
throw new System.NotImplementedException("Waiting for volunteers to implement this class");
}
}
+
+ public override IndexOutput CreateOutput(string name)
+ {
+ throw new System.NotImplementedException("Waiting for volunteers to implement this class");
+ }
}
}
Modified: incubator/lucene.net/branches/Lucene.Net.3.0.3/trunk/src/core/Store/NativeFSLockFactory.cs
URL: http://svn.apache.org/viewvc/incubator/lucene.net/branches/Lucene.Net.3.0.3/trunk/src/core/Store/NativeFSLockFactory.cs?rev=1199962&r1=1199961&r2=1199962&view=diff
==============================================================================
--- incubator/lucene.net/branches/Lucene.Net.3.0.3/trunk/src/core/Store/NativeFSLockFactory.cs (original)
+++ incubator/lucene.net/branches/Lucene.Net.3.0.3/trunk/src/core/Store/NativeFSLockFactory.cs Wed Nov 9 21:03:47 2011
@@ -16,6 +16,7 @@
*/
using System;
+using System.Collections.Generic;
namespace Lucene.Net.Store
{
@@ -50,7 +51,7 @@ namespace Lucene.Net.Store
/// <seealso cref="LockFactory">
/// </seealso>
- public class NativeFSLockFactory:FSLockFactory
+ public class NativeFSLockFactory : FSLockFactory
{
/// <summary> Create a NativeFSLockFactory instance, with null (unset)
/// lock directory. When you pass this factory to a <see cref="FSDirectory" />
@@ -72,17 +73,6 @@ namespace Lucene.Net.Store
{
}
- /// <summary> Create a NativeFSLockFactory instance, storing lock
- /// files into the specified lockDir:
- ///
- /// </summary>
- /// <param name="lockDir">where lock files are created.
- /// </param>
- [System.Obsolete("Use the constructor that takes a DirectoryInfo, this will be removed in the 3.0 release")]
- public NativeFSLockFactory(System.IO.FileInfo lockDir) : this(new System.IO.DirectoryInfo(lockDir.FullName))
- {
- }
-
/// <summary> Create a NativeFSLockFactory instance, storing lock
/// files into the specified lockDir:
///
@@ -168,12 +158,7 @@ namespace Lucene.Net.Store
* one JVM (each with their own NativeFSLockFactory
* instance) have set the same lock dir and lock prefix.
*/
- private static System.Collections.Hashtable LOCK_HELD = new System.Collections.Hashtable();
-
- [System.Obsolete("Use the constructor that takes a DirectoryInfo, this will be removed in the 3.0 release")]
- public NativeFSLock(System.IO.FileInfo lockDir, System.String lockFileName):this(new System.IO.DirectoryInfo(lockDir.FullName), lockFileName)
- {
- }
+ private static HashSet<string> LOCK_HELD = new HashSet<string>();
public NativeFSLock(System.IO.DirectoryInfo lockDir, System.String lockFileName)
{
Modified: incubator/lucene.net/branches/Lucene.Net.3.0.3/trunk/src/core/Store/NoLockFactory.cs
URL: http://svn.apache.org/viewvc/incubator/lucene.net/branches/Lucene.Net.3.0.3/trunk/src/core/Store/NoLockFactory.cs?rev=1199962&r1=1199961&r2=1199962&view=diff
==============================================================================
--- incubator/lucene.net/branches/Lucene.Net.3.0.3/trunk/src/core/Store/NoLockFactory.cs (original)
+++ incubator/lucene.net/branches/Lucene.Net.3.0.3/trunk/src/core/Store/NoLockFactory.cs Wed Nov 9 21:03:47 2011
@@ -21,7 +21,6 @@ namespace Lucene.Net.Store
{
/// <summary> Use this <see cref="LockFactory" /> to disable locking entirely.
- /// This LockFactory is used when you call <see cref="FSDirectory.SetDisableLocks" />.
/// Only one instance of this lock is created. You should call <see cref="GetNoLockFactory()" />
/// to get the instance.
///
Modified: incubator/lucene.net/branches/Lucene.Net.3.0.3/trunk/src/core/Store/RAMDirectory.cs
URL: http://svn.apache.org/viewvc/incubator/lucene.net/branches/Lucene.Net.3.0.3/trunk/src/core/Store/RAMDirectory.cs?rev=1199962&r1=1199961&r2=1199962&view=diff
==============================================================================
--- incubator/lucene.net/branches/Lucene.Net.3.0.3/trunk/src/core/Store/RAMDirectory.cs (original)
+++ incubator/lucene.net/branches/Lucene.Net.3.0.3/trunk/src/core/Store/RAMDirectory.cs Wed Nov 9 21:03:47 2011
@@ -25,15 +25,13 @@ namespace Lucene.Net.Store
/// but can be changed with <see cref="Directory.SetLockFactory"/>.
///
/// </summary>
- /// <version> $Id: RAMDirectory.java 781333 2009-06-03 10:38:57Z mikemccand $
- /// </version>
[Serializable]
public class RAMDirectory:Directory
{
private const long serialVersionUID = 1L;
-
- internal protected System.Collections.Hashtable fileMap = new System.Collections.Hashtable();
+
+ internal protected SupportClass.HashMap<string, RAMFile> fileMap = new SupportClass.HashMap<string, RAMFile>();
internal protected long sizeInBytes = 0;
// *****
@@ -72,36 +70,6 @@ namespace Lucene.Net.Store
Directory.Copy(dir, this, closeDir);
}
- /// <summary> Creates a new <c>RAMDirectory</c> instance from the <see cref="FSDirectory"/>.
- ///
- /// </summary>
- /// <param name="dir">a <c>File</c> specifying the index directory
- ///
- /// </param>
- /// <seealso cref="RAMDirectory(Directory)">
- /// </seealso>
- /// <deprecated> Use <see cref="RAMDirectory(Directory)"/> instead
- /// </deprecated>
- [Obsolete("Use RAMDirectory(Directory) instead")]
- public RAMDirectory(System.IO.FileInfo dir):this(FSDirectory.GetDirectory(dir), true)
- {
- }
-
- /// <summary> Creates a new <c>RAMDirectory</c> instance from the <see cref="FSDirectory"/>.
- ///
- /// </summary>
- /// <param name="dir">a <c>String</c> specifying the full index directory path
- ///
- /// </param>
- /// <seealso cref="RAMDirectory(Directory)">
- /// </seealso>
- /// <deprecated> Use <see cref="RAMDirectory(Directory)"/> instead
- /// </deprecated>
- [Obsolete("Use RAMDirectory(Directory) instead")]
- public RAMDirectory(System.String dir):this(FSDirectory.GetDirectory(dir), true)
- {
- }
-
//https://issues.apache.org/jira/browse/LUCENENET-174
[System.Runtime.Serialization.OnDeserialized]
void OnDeserialized(System.Runtime.Serialization.StreamingContext context)
@@ -111,28 +79,19 @@ namespace Lucene.Net.Store
SetLockFactory(new SingleInstanceLockFactory());
}
}
-
- [Obsolete("Lucene.Net-2.9.1. This method overrides obsolete member Lucene.Net.Store.Directory.List()")]
- public override System.String[] List()
- {
- lock (this)
- {
- return ListAll();
- }
- }
public override System.String[] ListAll()
{
lock (this)
{
EnsureOpen();
- System.Collections.ICollection fileNames = fileMap.Keys;
+ // TODO: may have better performance if our HashMap implmented KeySet() instead of generating one via HashSet
+ System.Collections.Generic.ISet<string> fileNames = new System.Collections.Generic.HashSet<string>(fileMap.Keys);
System.String[] result = new System.String[fileNames.Count];
int i = 0;
- System.Collections.IEnumerator it = fileNames.GetEnumerator();
- while (it.MoveNext())
+ foreach(string filename in fileNames)
{
- result[i++] = ((System.String) it.Current);
+ result[i++] = filename;
}
return result;
}
@@ -145,7 +104,7 @@ namespace Lucene.Net.Store
RAMFile file;
lock (this)
{
- file = (RAMFile) fileMap[name];
+ file = fileMap[name];
}
return file != null;
}
@@ -158,7 +117,7 @@ namespace Lucene.Net.Store
RAMFile file;
lock (this)
{
- file = (RAMFile) fileMap[name];
+ file = fileMap[name];
}
if (file == null)
throw new System.IO.FileNotFoundException(name);
@@ -173,7 +132,7 @@ namespace Lucene.Net.Store
RAMFile file;
lock (this)
{
- file = (RAMFile) fileMap[name];
+ file = fileMap[name];
}
if (file == null)
throw new System.IO.FileNotFoundException(name);
@@ -207,7 +166,7 @@ namespace Lucene.Net.Store
RAMFile file;
lock (this)
{
- file = (RAMFile) fileMap[name];
+ file = fileMap[name];
}
if (file == null)
throw new System.IO.FileNotFoundException(name);
@@ -234,7 +193,7 @@ namespace Lucene.Net.Store
lock (this)
{
EnsureOpen();
- RAMFile file = (RAMFile) fileMap[name];
+ RAMFile file = fileMap[name];
if (file != null)
{
fileMap.Remove(name);
@@ -246,30 +205,6 @@ namespace Lucene.Net.Store
}
}
- /// <summary>Renames an existing file in the directory.</summary>
- /// <throws> FileNotFoundException if from does not exist </throws>
- /// <deprecated>
- /// </deprecated>
- [Obsolete]
- public override void RenameFile(System.String from, System.String to)
- {
- lock (this)
- {
- EnsureOpen();
- RAMFile fromFile = (RAMFile) fileMap[from];
- if (fromFile == null)
- throw new System.IO.FileNotFoundException(from);
- RAMFile toFile = (RAMFile) fileMap[to];
- if (toFile != null)
- {
- sizeInBytes -= toFile.sizeInBytes; // updates to RAMFile.sizeInBytes synchronized on directory
- toFile.directory = null;
- }
- fileMap.Remove(from);
- fileMap[to] = fromFile;
- }
- }
-
/// <summary>Creates a new, empty file in the directory with the given name. Returns a stream writing this file. </summary>
public override IndexOutput CreateOutput(System.String name)
{
@@ -277,7 +212,7 @@ namespace Lucene.Net.Store
RAMFile file = new RAMFile(this);
lock (this)
{
- RAMFile existing = (RAMFile) fileMap[name];
+ RAMFile existing = fileMap[name];
if (existing != null)
{
sizeInBytes -= existing.sizeInBytes;
@@ -295,7 +230,7 @@ namespace Lucene.Net.Store
RAMFile file;
lock (this)
{
- file = (RAMFile) fileMap[name];
+ file = fileMap[name];
}
if (file == null)
throw new System.IO.FileNotFoundException(name);
@@ -317,7 +252,7 @@ namespace Lucene.Net.Store
Close();
}
- public System.Collections.Hashtable fileMap_ForNUnit
+ public SupportClass.HashMap<string, RAMFile> fileMap_ForNUnit
{
get { return fileMap; }
}
Modified: incubator/lucene.net/branches/Lucene.Net.3.0.3/trunk/src/core/Store/RAMFile.cs
URL: http://svn.apache.org/viewvc/incubator/lucene.net/branches/Lucene.Net.3.0.3/trunk/src/core/Store/RAMFile.cs?rev=1199962&r1=1199961&r2=1199962&view=diff
==============================================================================
--- incubator/lucene.net/branches/Lucene.Net.3.0.3/trunk/src/core/Store/RAMFile.cs (original)
+++ incubator/lucene.net/branches/Lucene.Net.3.0.3/trunk/src/core/Store/RAMFile.cs Wed Nov 9 21:03:47 2011
@@ -26,7 +26,7 @@ namespace Lucene.Net.Store
private const long serialVersionUID = 1L;
- protected System.Collections.ArrayList buffers = new System.Collections.ArrayList();
+ protected System.Collections.Generic.List<byte[]> buffers = new System.Collections.Generic.List<byte[]>();
internal long length;
internal RAMDirectory directory;
internal long sizeInBytes;
@@ -102,7 +102,7 @@ namespace Lucene.Net.Store
{
lock (this)
{
- return (byte[]) buffers[index];
+ return buffers[index];
}
}
Modified: incubator/lucene.net/branches/Lucene.Net.3.0.3/trunk/src/core/Store/RAMInputStream.cs
URL: http://svn.apache.org/viewvc/incubator/lucene.net/branches/Lucene.Net.3.0.3/trunk/src/core/Store/RAMInputStream.cs?rev=1199962&r1=1199961&r2=1199962&view=diff
==============================================================================
--- incubator/lucene.net/branches/Lucene.Net.3.0.3/trunk/src/core/Store/RAMInputStream.cs (original)
+++ incubator/lucene.net/branches/Lucene.Net.3.0.3/trunk/src/core/Store/RAMInputStream.cs Wed Nov 9 21:03:47 2011
@@ -23,10 +23,7 @@ namespace Lucene.Net.Store
/// <summary> A memory-resident <see cref="IndexInput" /> implementation.
///
/// </summary>
- /// <version> $Id: RAMInputStream.java 632120 2008-02-28 21:13:59Z mikemccand $
- /// </version>
-
- public class RAMInputStream:IndexInput, System.ICloneable
+ public class RAMInputStream : IndexInput, System.ICloneable
{
internal static readonly int BUFFER_SIZE;
@@ -54,10 +51,17 @@ namespace Lucene.Net.Store
currentBufferIndex = - 1;
currentBuffer = null;
}
-
+
+ // TODO: revisit Close() for 3.0
+ //public override void Dispose()
+ //{
+ // // nothing to do here
+ //}
+
public override void Close()
{
- // nothing to do here
+ //Dispose();
+ // nothing to do here
}
public override long Length()
@@ -110,7 +114,7 @@ namespace Lucene.Net.Store
}
else
{
- currentBuffer = (byte[]) file.GetBuffer(currentBufferIndex);
+ currentBuffer = file.GetBuffer(currentBufferIndex);
bufferPosition = 0;
bufferStart = (long) BUFFER_SIZE * (long) currentBufferIndex;
long buflen = length - bufferStart;