http://git-wip-us.apache.org/repos/asf/lucenenet/blob/02362804/src/contrib/Highlighter/SpanGradientFormatter.cs ---------------------------------------------------------------------- diff --git a/src/contrib/Highlighter/SpanGradientFormatter.cs b/src/contrib/Highlighter/SpanGradientFormatter.cs deleted file mode 100644 index 369e8fa..0000000 --- a/src/contrib/Highlighter/SpanGradientFormatter.cs +++ /dev/null @@ -1,73 +0,0 @@ -/* - * 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. - */ - -using System; -using System.Text; - -namespace Lucene.Net.Search.Highlight -{ - /// <summary> - /// Formats text with different color intensity depending on the score of the - /// term using the span tag. GradientFormatter uses a bgcolor argument to the font tag which - /// doesn't work in Mozilla, thus this class. - /// </summary> - /// <seealso cref="GradientFormatter"/> - public class SpanGradientFormatter : GradientFormatter - { - // guess how much extra text we'll add to the text we're highlighting to try to avoid a StringBuilder resize - private static readonly String TEMPLATE = "<span style=\"background: #EEEEEE; color: #000000;\">...</span>"; - private static readonly int EXTRA = TEMPLATE.Length; - - public SpanGradientFormatter(float maxScore, String minForegroundColor, - String maxForegroundColor, String minBackgroundColor, - String maxBackgroundColor) - : base(maxScore, minForegroundColor, maxForegroundColor, minBackgroundColor, maxBackgroundColor) - { } - - public override String HighlightTerm(String originalText, TokenGroup tokenGroup) - { - if (tokenGroup.TotalScore == 0) - return originalText; - float score = tokenGroup.TotalScore; - if (score == 0) - { - return originalText; - } - - // try to size sb correctly - var sb = new StringBuilder(originalText.Length + EXTRA); - - sb.Append("<span style=\""); - if (highlightForeground) - { - sb.Append("color: "); - sb.Append(GetForegroundColorString(score)); - sb.Append("; "); - } - if (highlightBackground) - { - sb.Append("background: "); - sb.Append(GetBackgroundColorString(score)); - sb.Append("; "); - } - sb.Append("\">"); - sb.Append(originalText); - sb.Append("</span>"); - return sb.ToString(); - } - } -} \ No newline at end of file
http://git-wip-us.apache.org/repos/asf/lucenenet/blob/02362804/src/contrib/Highlighter/TextFragment.cs ---------------------------------------------------------------------- diff --git a/src/contrib/Highlighter/TextFragment.cs b/src/contrib/Highlighter/TextFragment.cs deleted file mode 100644 index d522593..0000000 --- a/src/contrib/Highlighter/TextFragment.cs +++ /dev/null @@ -1,73 +0,0 @@ -/* - * 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. - */ - -using System; -using System.Text; - -namespace Lucene.Net.Search.Highlight -{ - /// <summary> Low-level class used to record information about a section of a document - /// with a score. - /// </summary> - public class TextFragment - { - private StringBuilder markedUpText; - - - public TextFragment(StringBuilder markedUpText, int textStartPos, int fragNum) - { - this.markedUpText = markedUpText; - this.TextStartPos = textStartPos; - this.FragNum = fragNum; - } - - public float Score { get; protected internal set; } - public int TextEndPos { get; protected internal set; } - public int TextStartPos { get; protected internal set; } - - /// <summary> - /// the fragment sequence number - /// </summary> - public int FragNum { get; protected internal set; } - - - /// <summary></summary> - /// <param name="frag2">Fragment to be merged into this one</param> - public void Merge(TextFragment frag2) - { - TextEndPos = frag2.TextEndPos; - Score = Math.Max(Score, frag2.Score); - } - - /// <summary> - /// true if this fragment follows the one passed - /// </summary> - public bool Follows(TextFragment fragment) - { - return TextStartPos == fragment.TextEndPos; - } - - /// <summary> - /// Returns the marked-up text for this text fragment - /// </summary> - public override String ToString() - { - return markedUpText.ToString(TextStartPos, TextEndPos - TextStartPos); - } - - } -} \ No newline at end of file http://git-wip-us.apache.org/repos/asf/lucenenet/blob/02362804/src/contrib/Highlighter/TokenGroup.cs ---------------------------------------------------------------------- diff --git a/src/contrib/Highlighter/TokenGroup.cs b/src/contrib/Highlighter/TokenGroup.cs deleted file mode 100644 index 6f84f6c..0000000 --- a/src/contrib/Highlighter/TokenGroup.cs +++ /dev/null @@ -1,144 +0,0 @@ -/* - * 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. - */ - -using System; -using Lucene.Net.Analysis; -using Lucene.Net.Analysis.Tokenattributes; - -namespace Lucene.Net.Search.Highlight -{ - /// <summary> One, or several overlapping tokens, along with the score(s) and the - /// scope of the original text - /// </summary> - public class TokenGroup - { - private static readonly int MAX_NUM_TOKENS_PER_GROUP = 50; - - private Token[] tokens = new Token[MAX_NUM_TOKENS_PER_GROUP]; - private float[] scores = new float[MAX_NUM_TOKENS_PER_GROUP]; - private int startOffset = 0; - private int endOffset = 0; - private float tot; - - public int MatchStartOffset { get; private set; } - public int MatchEndOffset { get; private set; } - public int NumTokens { get; private set; } - - private IOffsetAttribute offsetAtt; - private ITermAttribute termAtt; - - public TokenGroup(TokenStream tokenStream) - { - NumTokens = 0; - offsetAtt = tokenStream.AddAttribute<IOffsetAttribute>(); - termAtt = tokenStream.AddAttribute<ITermAttribute>(); - } - - protected internal void AddToken(float score) - { - if (NumTokens < MAX_NUM_TOKENS_PER_GROUP) - { - int termStartOffset = offsetAtt.StartOffset; - int termEndOffset = offsetAtt.EndOffset; - if (NumTokens == 0) - { - startOffset = MatchStartOffset = termStartOffset; - endOffset = MatchEndOffset = termEndOffset; - tot += score; - } - else - { - startOffset = Math.Min(startOffset, termStartOffset); - endOffset = Math.Max(endOffset, termEndOffset); - if (score > 0) - { - if (tot == 0) - { - MatchStartOffset = offsetAtt.StartOffset; - MatchEndOffset = offsetAtt.EndOffset; - } - else - { - MatchStartOffset = Math.Min(MatchStartOffset, termStartOffset); - MatchEndOffset = Math.Max(MatchEndOffset, termEndOffset); - } - tot += score; - } - } - Token token = new Token(termStartOffset, termEndOffset); - token.SetTermBuffer(termAtt.Term); - tokens[NumTokens] = token; - scores[NumTokens] = score; - NumTokens++; - } - } - - protected internal bool IsDistinct() - { - return offsetAtt.StartOffset >= endOffset; - } - - protected internal void Clear() - { - NumTokens = 0; - tot = 0; - } - - - /// <summary> - /// the "n"th token - /// </summary> - /// <param name="index">a value between 0 and numTokens -1</param> - public Token GetToken(int index) - { - return tokens[index]; - } - - /// <summary> - /// the "n"th score - /// </summary> - /// <param name="index">a value between 0 and numTokens -1</param> - public float GetScore(int index) - { - return scores[index]; - } - - /// <summary> - /// the end position in the original text - /// </summary> - public int EndOffset - { - get { return endOffset; } - } - - /// <summary> - /// The start position in the original text - /// </summary> - public int StartOffset - { - get { return startOffset; } - } - - /// <summary> - /// All tokens' scores summed up - /// </summary> - public float TotalScore - { - get { return tot; } - } - } -} http://git-wip-us.apache.org/repos/asf/lucenenet/blob/02362804/src/contrib/Highlighter/TokenSources.cs ---------------------------------------------------------------------- diff --git a/src/contrib/Highlighter/TokenSources.cs b/src/contrib/Highlighter/TokenSources.cs deleted file mode 100644 index 745ac2a..0000000 --- a/src/contrib/Highlighter/TokenSources.cs +++ /dev/null @@ -1,267 +0,0 @@ -/* - * 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. - */ - -/* -* Created on 28-Oct-2004 -*/ - -using System; -using System.Collections.Generic; -using System.IO; -using System.Linq; -using Lucene.Net.Analysis; -using Lucene.Net.Analysis.Tokenattributes; -using Lucene.Net.Documents; -using Lucene.Net.Index; - -namespace Lucene.Net.Search.Highlight -{ - - /// <summary> Hides implementation issues associated with obtaining a TokenStream for use with - /// the higlighter - can obtain from TermFreqVectors with offsets and (optionally) positions or - /// from Analyzer class reparsing the stored content. - /// </summary> - public class TokenSources - { - public class StoredTokenStream : TokenStream - { - protected internal Token[] tokens; - protected internal int currentToken = 0; - protected internal ITermAttribute termAtt; - protected internal IOffsetAttribute offsetAtt; - - protected internal StoredTokenStream(Token[] tokens) - { - this.tokens = tokens; - termAtt = AddAttribute<ITermAttribute>(); - offsetAtt = AddAttribute<IOffsetAttribute>(); - } - - public override bool IncrementToken() - { - if (currentToken >= tokens.Length) - { - return false; - } - ClearAttributes(); - Token token = tokens[currentToken++]; - termAtt.SetTermBuffer(token.Term); - offsetAtt.SetOffset(token.StartOffset, token.EndOffset); - return true; - } - - protected override void Dispose(bool disposing) - { - // do nothing - } - } - - /// <summary> - /// A convenience method that tries to first get a TermPositionVector for the specified docId, then, falls back to - /// using the passed in {@link org.apache.lucene.document.Document} to retrieve the TokenStream. This is useful when - /// you already have the document, but would prefer to use the vector first. - /// </summary> - /// <param name="reader">The <see cref="IndexReader"/> to use to try and get the vector from</param> - /// <param name="docId">The docId to retrieve.</param> - /// <param name="field">The field to retrieve on the document</param> - /// <param name="doc">The document to fall back on</param> - /// <param name="analyzer">The analyzer to use for creating the TokenStream if the vector doesn't exist</param> - /// <returns>The <see cref="TokenStream"/> for the <see cref="IFieldable"/> on the <see cref="Document"/></returns> - /// <exception cref="IOException">if there was an error loading</exception> - public static TokenStream GetAnyTokenStream(IndexReader reader, int docId, String field, Document doc, - Analyzer analyzer) - { - TokenStream ts = null; - - var tfv = reader.GetTermFreqVector(docId, field); - if (tfv != null) - { - var termPositionVector = tfv as TermPositionVector; - if (termPositionVector != null) - { - ts = GetTokenStream(termPositionVector); - } - } - //No token info stored so fall back to analyzing raw content - return ts ?? GetTokenStream(doc, field, analyzer); - } - - /// <summary> - /// A convenience method that tries a number of approaches to getting a token stream. - /// The cost of finding there are no termVectors in the index is minimal (1000 invocations still - /// registers 0 ms). So this "lazy" (flexible?) approach to coding is probably acceptable - /// </summary> - /// <returns>null if field not stored correctly</returns> - public static TokenStream GetAnyTokenStream(IndexReader reader, int docId, String field, Analyzer analyzer) - { - TokenStream ts = null; - - var tfv = reader.GetTermFreqVector(docId, field); - if (tfv != null) - { - var termPositionVector = tfv as TermPositionVector; - if (termPositionVector != null) - { - ts = GetTokenStream(termPositionVector); - } - } - //No token info stored so fall back to analyzing raw content - return ts ?? GetTokenStream(reader, docId, field, analyzer); - } - - public static TokenStream GetTokenStream(TermPositionVector tpv) - { - //assumes the worst and makes no assumptions about token position sequences. - return GetTokenStream(tpv, false); - } - - /// <summary> - /// Low level api. - /// Returns a token stream or null if no offset info available in index. - /// This can be used to feed the highlighter with a pre-parsed token stream - /// - /// In my tests the speeds to recreate 1000 token streams using this method are: - /// - with TermVector offset only data stored - 420 milliseconds - /// - with TermVector offset AND position data stored - 271 milliseconds - /// (nb timings for TermVector with position data are based on a tokenizer with contiguous - /// positions - no overlaps or gaps) - /// The cost of not using TermPositionVector to store - /// pre-parsed content and using an analyzer to re-parse the original content: - /// - reanalyzing the original content - 980 milliseconds - /// - /// The re-analyze timings will typically vary depending on - - /// 1) The complexity of the analyzer code (timings above were using a - /// stemmer/lowercaser/stopword combo) - /// 2) The number of other fields (Lucene reads ALL fields off the disk - /// when accessing just one document field - can cost dear!) - /// 3) Use of compression on field storage - could be faster due to compression (less disk IO) - /// or slower (more CPU burn) depending on the content. - /// </summary> - /// <param name="tpv"/> - /// <param name="tokenPositionsGuaranteedContiguous">true if the token position numbers have no overlaps or gaps. If looking - /// to eek out the last drops of performance, set to true. If in doubt, set to false.</param> - public static TokenStream GetTokenStream(TermPositionVector tpv, bool tokenPositionsGuaranteedContiguous) - { - //code to reconstruct the original sequence of Tokens - String[] terms = tpv.GetTerms(); - int[] freq = tpv.GetTermFrequencies(); - - int totalTokens = freq.Sum(); - - var tokensInOriginalOrder = new Token[totalTokens]; - List<Token> unsortedTokens = null; - for (int t = 0; t < freq.Length; t++) - { - TermVectorOffsetInfo[] offsets = tpv.GetOffsets(t); - if (offsets == null) - { - return null; - } - - int[] pos = null; - if (tokenPositionsGuaranteedContiguous) - { - //try get the token position info to speed up assembly of tokens into sorted sequence - pos = tpv.GetTermPositions(t); - } - if (pos == null) - { - //tokens NOT stored with positions or not guaranteed contiguous - must add to list and sort later - if (unsortedTokens == null) - { - unsortedTokens = new List<Token>(); - } - - foreach (TermVectorOffsetInfo t1 in offsets) - { - var token = new Token(t1.StartOffset, t1.EndOffset); - token.SetTermBuffer(terms[t]); - unsortedTokens.Add(token); - } - } - else - { - //We have positions stored and a guarantee that the token position information is contiguous - - // This may be fast BUT wont work if Tokenizers used which create >1 token in same position or - // creates jumps in position numbers - this code would fail under those circumstances - - //tokens stored with positions - can use this to index straight into sorted array - for (int tp = 0; tp < pos.Length; tp++) - { - var token = new Token(terms[t], offsets[tp].StartOffset, offsets[tp].EndOffset); - tokensInOriginalOrder[pos[tp]] = token; - } - } - } - //If the field has been stored without position data we must perform a sort - if (unsortedTokens != null) - { - tokensInOriginalOrder = unsortedTokens.ToArray(); - Array.Sort(tokensInOriginalOrder, (t1, t2) => - { - if (t1.StartOffset > t2.EndOffset) - return 1; - if (t1.StartOffset < t2.StartOffset) - return -1; - return 0; - }); - } - return new StoredTokenStream(tokensInOriginalOrder); - } - - public static TokenStream GetTokenStream(IndexReader reader, int docId, System.String field) - { - var tfv = reader.GetTermFreqVector(docId, field); - if (tfv == null) - { - throw new ArgumentException(field + " in doc #" + docId - + "does not have any term position data stored"); - } - if (tfv is TermPositionVector) - { - var tpv = (TermPositionVector) reader.GetTermFreqVector(docId, field); - return GetTokenStream(tpv); - } - throw new ArgumentException(field + " in doc #" + docId - + "does not have any term position data stored"); - } - - //convenience method - public static TokenStream GetTokenStream(IndexReader reader, int docId, String field, Analyzer analyzer) - { - Document doc = reader.Document(docId); - return GetTokenStream(doc, field, analyzer); - } - - public static TokenStream GetTokenStream(Document doc, String field, Analyzer analyzer) - { - String contents = doc.Get(field); - if (contents == null) - { - throw new ArgumentException("Field " + field + " in document is not stored and cannot be analyzed"); - } - return GetTokenStream(field, contents, analyzer); - } - - //convenience method - public static TokenStream GetTokenStream(String field, String contents, Analyzer analyzer) - { - return analyzer.TokenStream(field, new StringReader(contents)); - } - } -} \ No newline at end of file http://git-wip-us.apache.org/repos/asf/lucenenet/blob/02362804/src/contrib/Highlighter/WeightedSpanTerm.cs ---------------------------------------------------------------------- diff --git a/src/contrib/Highlighter/WeightedSpanTerm.cs b/src/contrib/Highlighter/WeightedSpanTerm.cs deleted file mode 100644 index d89b915..0000000 --- a/src/contrib/Highlighter/WeightedSpanTerm.cs +++ /dev/null @@ -1,104 +0,0 @@ -/* - * 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. - */ - -using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; - -namespace Lucene.Net.Search.Highlight -{ - /// <summary> - /// Lightweight class to hold term, Weight, and positions used for scoring this term. - /// </summary> - public class WeightedSpanTerm : WeightedTerm - { - private bool _positionSensitive; - private readonly List<PositionSpan> _positionSpans = new List<PositionSpan>(); - - public WeightedSpanTerm(float weight, String term) - : base(weight, term) - { - - this._positionSpans = new List<PositionSpan>(); - } - - public WeightedSpanTerm(float weight, String term, bool positionSensitive) - : base(weight, term) - { - - this._positionSensitive = positionSensitive; - } - - /// <summary> - /// Checks to see if this term is valid at <c>position</c>. - /// </summary> - /// <param name="position">to check against valid term postions</param> - /// <returns>true iff this term is a hit at this position</returns> - public bool CheckPosition(int position) - { - // There would probably be a slight speed improvement if PositionSpans - // where kept in some sort of priority queue - that way this method - // could - // bail early without checking each PositionSpan. - - foreach (var positionSpan in _positionSpans) - { - if (((position >= positionSpan.Start) && (position <= positionSpan.End))) - { - return true; - } - } - - return false; - } - - public void AddPositionSpans(List<PositionSpan> positionSpans) - { - this._positionSpans.AddRange(positionSpans); - } - - public bool IsPositionSensitive() - { - return _positionSensitive; - } - - public void SetPositionSensitive(bool positionSensitive) - { - this._positionSensitive = positionSensitive; - } - - public List<PositionSpan> GetPositionSpans() - { - return _positionSpans; - } - } - - - // Utility class to store a Span - public class PositionSpan - { - public int Start { get; private set; } - public int End { get; private set; } - - public PositionSpan(int start, int end) - { - this.Start = start; - this.End = end; - } - } -} http://git-wip-us.apache.org/repos/asf/lucenenet/blob/02362804/src/contrib/Highlighter/WeightedSpanTermExtractor.cs ---------------------------------------------------------------------- diff --git a/src/contrib/Highlighter/WeightedSpanTermExtractor.cs b/src/contrib/Highlighter/WeightedSpanTermExtractor.cs deleted file mode 100644 index df7a90f..0000000 --- a/src/contrib/Highlighter/WeightedSpanTermExtractor.cs +++ /dev/null @@ -1,667 +0,0 @@ -/* - * - * 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. - * -*/ - -using System; -using System.Collections.Generic; -using System.IO; -using System.Linq; -using System.Text; -using Lucene.Net.Analysis; -using Lucene.Net.Index; -using Lucene.Net.Index.Memory; -using Lucene.Net.Search.Spans; -using Lucene.Net.Store; -using Lucene.Net.Support; -using Lucene.Net.Util; - -namespace Lucene.Net.Search.Highlight -{ - /// <summary> - /// Class used to extract <see cref="WeightedSpanTerm"/>s from a <see cref="Query"/> based on whether - /// <see cref="Term"/>s from the <see cref="Query"/> are contained in a supplied <see cref="Analysis.TokenStream"/>. - /// </summary> - public class WeightedSpanTermExtractor - { - private String fieldName; - private TokenStream tokenStream; - private IDictionary<String, IndexReader> readers = new HashMap<String, IndexReader>(10); - private String defaultField; - private bool expandMultiTermQuery; - private bool cachedTokenStream; - private bool wrapToCaching = true; - - public WeightedSpanTermExtractor() - { - } - - public WeightedSpanTermExtractor(String defaultField) - { - if (defaultField != null) - { - this.defaultField = StringHelper.Intern(defaultField); - } - } - - private void CloseReaders() - { - ICollection<IndexReader> readerSet = readers.Values; - - foreach (IndexReader reader in readerSet) - { - try - { - reader.Close(); - } - catch (IOException e) - { - // alert? - } - } - } - - /// <summary> - /// Fills a <c>Map</c> with <see cref="WeightedSpanTerm"/>s using the terms from the supplied <c>Query</c>. - /// </summary> - /// <param name="query">Query to extract Terms from</param> - /// <param name="terms">Map to place created WeightedSpanTerms in</param> - private void Extract(Query query, IDictionary<String, WeightedSpanTerm> terms) - { - if (query is BooleanQuery) - { - BooleanClause[] queryClauses = ((BooleanQuery) query).GetClauses(); - - for (int i = 0; i < queryClauses.Length; i++) - { - if (!queryClauses[i].IsProhibited) - { - Extract(queryClauses[i].Query, terms); - } - } - } - else if (query is PhraseQuery) - { - PhraseQuery phraseQuery = ((PhraseQuery) query); - Term[] phraseQueryTerms = phraseQuery.GetTerms(); - SpanQuery[] clauses = new SpanQuery[phraseQueryTerms.Length]; - for (int i = 0; i < phraseQueryTerms.Length; i++) - { - clauses[i] = new SpanTermQuery(phraseQueryTerms[i]); - } - int slop = phraseQuery.Slop; - int[] positions = phraseQuery.GetPositions(); - // add largest position increment to slop - if (positions.Length > 0) - { - int lastPos = positions[0]; - int largestInc = 0; - int sz = positions.Length; - for (int i = 1; i < sz; i++) - { - int pos = positions[i]; - int inc = pos - lastPos; - if (inc > largestInc) - { - largestInc = inc; - } - lastPos = pos; - } - if (largestInc > 1) - { - slop += largestInc; - } - } - - bool inorder = slop == 0; - - SpanNearQuery sp = new SpanNearQuery(clauses, slop, inorder); - sp.Boost = query.Boost; - ExtractWeightedSpanTerms(terms, sp); - } - else if (query is TermQuery) - { - ExtractWeightedTerms(terms, query); - } - else if (query is SpanQuery) - { - ExtractWeightedSpanTerms(terms, (SpanQuery) query); - } - else if (query is FilteredQuery) - { - Extract(((FilteredQuery) query).Query, terms); - } - else if (query is DisjunctionMaxQuery) - { - foreach (var q in ((DisjunctionMaxQuery) query)) - { - Extract(q, terms); - } - } - else if (query is MultiTermQuery && expandMultiTermQuery) - { - MultiTermQuery mtq = ((MultiTermQuery) query); - if (mtq.RewriteMethod != MultiTermQuery.SCORING_BOOLEAN_QUERY_REWRITE) - { - mtq = (MultiTermQuery) mtq.Clone(); - mtq.RewriteMethod = MultiTermQuery.SCORING_BOOLEAN_QUERY_REWRITE; - query = mtq; - } - FakeReader fReader = new FakeReader(); - MultiTermQuery.SCORING_BOOLEAN_QUERY_REWRITE.Rewrite(fReader, mtq); - if (fReader.Field != null) - { - IndexReader ir = GetReaderForField(fReader.Field); - Extract(query.Rewrite(ir), terms); - } - } - else if (query is MultiPhraseQuery) - { - MultiPhraseQuery mpq = (MultiPhraseQuery) query; - IList<Term[]> termArrays = mpq.GetTermArrays(); - int[] positions = mpq.GetPositions(); - if (positions.Length > 0) - { - - int maxPosition = positions[positions.Length - 1]; - for (int i = 0; i < positions.Length - 1; ++i) - { - if (positions[i] > maxPosition) - { - maxPosition = positions[i]; - } - } - - var disjunctLists = new List<SpanQuery>[maxPosition + 1]; - int distinctPositions = 0; - - for (int i = 0; i < termArrays.Count; ++i) - { - Term[] termArray = termArrays[i]; - List<SpanQuery> disjuncts = disjunctLists[positions[i]]; - if (disjuncts == null) - { - disjuncts = (disjunctLists[positions[i]] = new List<SpanQuery>(termArray.Length)); - ++distinctPositions; - } - for (int j = 0; j < termArray.Length; ++j) - { - disjuncts.Add(new SpanTermQuery(termArray[j])); - } - } - - int positionGaps = 0; - int position = 0; - SpanQuery[] clauses = new SpanQuery[distinctPositions]; - for (int i = 0; i < disjunctLists.Length; ++i) - { - List<SpanQuery> disjuncts = disjunctLists[i]; - if (disjuncts != null) - { - clauses[position++] = new SpanOrQuery(disjuncts.ToArray()); - } - else - { - ++positionGaps; - } - } - - int slop = mpq.Slop; - bool inorder = (slop == 0); - - SpanNearQuery sp = new SpanNearQuery(clauses, slop + positionGaps, inorder); - sp.Boost = query.Boost; - ExtractWeightedSpanTerms(terms, sp); - } - } - } - - /// <summary> - /// Fills a <c>Map</c> with <see cref="WeightedSpanTerm"/>s using the terms from the supplied <c>SpanQuery</c>. - /// </summary> - /// <param name="terms">Map to place created WeightedSpanTerms in</param> - /// <param name="spanQuery">SpanQuery to extract Terms from</param> - private void ExtractWeightedSpanTerms(IDictionary<String, WeightedSpanTerm> terms, SpanQuery spanQuery) - { - HashSet<String> fieldNames; - - if (fieldName == null) - { - fieldNames = new HashSet<String>(); - CollectSpanQueryFields(spanQuery, fieldNames); - } - else - { - fieldNames = new HashSet<String>(); - fieldNames.Add(fieldName); - } - // To support the use of the default field name - if (defaultField != null) - { - fieldNames.Add(defaultField); - } - - IDictionary<String, SpanQuery> queries = new HashMap<String, SpanQuery>(); - - var nonWeightedTerms = Support.Compatibility.SetFactory.CreateHashSet<Term>(); - bool mustRewriteQuery = MustRewriteQuery(spanQuery); - if (mustRewriteQuery) - { - foreach (String field in fieldNames) - { - SpanQuery rewrittenQuery = (SpanQuery) spanQuery.Rewrite(GetReaderForField(field)); - queries[field] = rewrittenQuery; - rewrittenQuery.ExtractTerms(nonWeightedTerms); - } - } - else - { - spanQuery.ExtractTerms(nonWeightedTerms); - } - - List<PositionSpan> spanPositions = new List<PositionSpan>(); - - foreach (String field in fieldNames) - { - - IndexReader reader = GetReaderForField(field); - Spans.Spans spans; - if (mustRewriteQuery) - { - spans = queries[field].GetSpans(reader); - } - else - { - spans = spanQuery.GetSpans(reader); - } - - - // collect span positions - while (spans.Next()) - { - spanPositions.Add(new PositionSpan(spans.Start(), spans.End() - 1)); - } - - } - - if (spanPositions.Count == 0) - { - // no spans found - return; - } - - foreach (Term queryTerm in nonWeightedTerms) - { - - if (FieldNameComparator(queryTerm.Field)) - { - WeightedSpanTerm weightedSpanTerm = terms[queryTerm.Text]; - - if (weightedSpanTerm == null) - { - weightedSpanTerm = new WeightedSpanTerm(spanQuery.Boost, queryTerm.Text); - weightedSpanTerm.AddPositionSpans(spanPositions); - weightedSpanTerm.SetPositionSensitive(true); - terms[queryTerm.Text] = weightedSpanTerm; - } - else - { - if (spanPositions.Count > 0) - { - weightedSpanTerm.AddPositionSpans(spanPositions); - } - } - } - } - } - - /// <summary> - /// Fills a <c>Map</c> with <see cref="WeightedSpanTerm"/>s using the terms from the supplied <c>Query</c>. - /// </summary> - /// <param name="terms"></param> - /// <param name="query"></param> - private void ExtractWeightedTerms(IDictionary<String, WeightedSpanTerm> terms, Query query) - { - var nonWeightedTerms = Support.Compatibility.SetFactory.CreateHashSet<Term>(); - query.ExtractTerms(nonWeightedTerms); - - foreach (Term queryTerm in nonWeightedTerms) - { - - if (FieldNameComparator(queryTerm.Field)) - { - WeightedSpanTerm weightedSpanTerm = new WeightedSpanTerm(query.Boost, queryTerm.Text); - terms[queryTerm.Text] = weightedSpanTerm; - } - } - } - - /// <summary> - /// Necessary to implement matches for queries against <c>defaultField</c> - /// </summary> - private bool FieldNameComparator(String fieldNameToCheck) - { - bool rv = fieldName == null || fieldNameToCheck == fieldName - || fieldNameToCheck == defaultField; - return rv; - } - - private IndexReader GetReaderForField(String field) - { - if (wrapToCaching && !cachedTokenStream && !(tokenStream is CachingTokenFilter)) - { - tokenStream = new CachingTokenFilter(tokenStream); - cachedTokenStream = true; - } - IndexReader reader = readers[field]; - if (reader == null) - { - MemoryIndex indexer = new MemoryIndex(); - indexer.AddField(field, tokenStream); - tokenStream.Reset(); - IndexSearcher searcher = indexer.CreateSearcher(); - reader = searcher.IndexReader; - readers[field] = reader; - } - - return reader; - } - - /// <summary> - /// Creates a Map of <c>WeightedSpanTerms</c> from the given <c>Query</c> and <c>TokenStream</c>. - /// </summary> - /// <param name="query">query that caused hit</param> - /// <param name="tokenStream">TokenStream of text to be highlighted</param> - /// <returns>Map containing WeightedSpanTerms</returns> - public IDictionary<String, WeightedSpanTerm> GetWeightedSpanTerms(Query query, TokenStream tokenStream) - { - return GetWeightedSpanTerms(query, tokenStream, null); - } - - - /// <summary> - /// Creates a Map of <c>WeightedSpanTerms</c> from the given <c>Query</c> and <c>TokenStream</c>. - /// </summary> - /// <param name="query">query that caused hit</param> - /// <param name="tokenStream">tokenStream of text to be highlighted</param> - /// <param name="fieldName">restricts Term's used based on field name</param> - /// <returns>Map containing WeightedSpanTerms</returns> - public IDictionary<String, WeightedSpanTerm> GetWeightedSpanTerms(Query query, TokenStream tokenStream, - String fieldName) - { - if (fieldName != null) - { - this.fieldName = StringHelper.Intern(fieldName); - } - else - { - this.fieldName = null; - } - - IDictionary<String, WeightedSpanTerm> terms = new PositionCheckingMap<String>(); - this.tokenStream = tokenStream; - try - { - Extract(query, terms); - } - finally - { - CloseReaders(); - } - - return terms; - } - - /// <summary> - /// Creates a Map of <c>WeightedSpanTerms</c> from the given <c>Query</c> and <c>TokenStream</c>. Uses a supplied - /// <c>IndexReader</c> to properly Weight terms (for gradient highlighting). - /// </summary> - /// <param name="query">Query that caused hit</param> - /// <param name="tokenStream">Tokenstream of text to be highlighted</param> - /// <param name="fieldName">restricts Term's used based on field name</param> - /// <param name="reader">to use for scoring</param> - /// <returns>Map of WeightedSpanTerms with quasi tf/idf scores</returns> - public IDictionary<String, WeightedSpanTerm> GetWeightedSpanTermsWithScores(Query query, TokenStream tokenStream, - String fieldName, IndexReader reader) - { - if (fieldName != null) - { - this.fieldName = StringHelper.Intern(fieldName); - } - else - { - this.fieldName = null; - } - this.tokenStream = tokenStream; - - IDictionary<String, WeightedSpanTerm> terms = new PositionCheckingMap<String>(); - Extract(query, terms); - - int totalNumDocs = reader.NumDocs(); - var weightedTerms = terms.Keys; - - try - { - foreach (var wt in weightedTerms) - { - WeightedSpanTerm weightedSpanTerm = terms[wt]; - int docFreq = reader.DocFreq(new Term(fieldName, weightedSpanTerm.Term)); - // docFreq counts deletes - if (totalNumDocs < docFreq) - { - docFreq = totalNumDocs; - } - // IDF algorithm taken from DefaultSimilarity class - float idf = (float) (Math.Log((float) totalNumDocs/(double) (docFreq + 1)) + 1.0); - weightedSpanTerm.Weight *= idf; - } - } - finally - { - - CloseReaders(); - } - - return terms; - } - - private void CollectSpanQueryFields(SpanQuery spanQuery, HashSet<String> fieldNames) - { - if (spanQuery is FieldMaskingSpanQuery) - { - CollectSpanQueryFields(((FieldMaskingSpanQuery) spanQuery).MaskedQuery, fieldNames); - } - else if (spanQuery is SpanFirstQuery) - { - CollectSpanQueryFields(((SpanFirstQuery) spanQuery).Match, fieldNames); - } - else if (spanQuery is SpanNearQuery) - { - foreach (SpanQuery clause in ((SpanNearQuery) spanQuery).GetClauses()) - { - CollectSpanQueryFields(clause, fieldNames); - } - } - else if (spanQuery is SpanNotQuery) - { - CollectSpanQueryFields(((SpanNotQuery) spanQuery).Include, fieldNames); - } - else if (spanQuery is SpanOrQuery) - { - foreach (SpanQuery clause in ((SpanOrQuery) spanQuery).GetClauses()) - { - CollectSpanQueryFields(clause, fieldNames); - } - } - else - { - fieldNames.Add(spanQuery.Field); - } - } - - private bool MustRewriteQuery(SpanQuery spanQuery) - { - if (!expandMultiTermQuery) - { - return false; // Will throw UnsupportedOperationException in case of a SpanRegexQuery. - } - else if (spanQuery is FieldMaskingSpanQuery) - { - return MustRewriteQuery(((FieldMaskingSpanQuery)spanQuery).MaskedQuery); - } - else if (spanQuery is SpanFirstQuery) - { - return MustRewriteQuery(((SpanFirstQuery)spanQuery).Match); - } - else if (spanQuery is SpanNearQuery) - { - foreach (SpanQuery clause in ((SpanNearQuery) spanQuery).GetClauses()) - { - if (MustRewriteQuery(clause)) - { - return true; - } - } - return false; - } - else if (spanQuery is SpanNotQuery) - { - SpanNotQuery spanNotQuery = (SpanNotQuery) spanQuery; - return MustRewriteQuery(spanNotQuery.Include) || MustRewriteQuery(spanNotQuery.Exclude); - } - else if (spanQuery is SpanOrQuery) - { - foreach (SpanQuery clause in ((SpanOrQuery) spanQuery).GetClauses()) - { - if (MustRewriteQuery(clause)) - { - return true; - } - } - return false; - } - else if (spanQuery is SpanTermQuery) - { - return false; - } - else - { - return true; - } - } - - - /// <summary> - /// This class makes sure that if both position sensitive and insensitive - /// versions of the same term are added, the position insensitive one wins. - /// </summary> - /// <typeparam name="K"></typeparam> - private class PositionCheckingMap<K> : HashMap<K, WeightedSpanTerm> - { - public PositionCheckingMap() - { - - } - - public PositionCheckingMap(IEnumerable<KeyValuePair<K, WeightedSpanTerm>> m) - { - PutAll(m); - } - - public void PutAll(IEnumerable<KeyValuePair<K, WeightedSpanTerm>> m) - { - foreach (var entry in m) - { - Add(entry.Key, entry.Value); - } - } - - public override void Add(K key, WeightedSpanTerm value) - { - base.Add(key, value); - WeightedSpanTerm prev = this[key]; - - if (prev == null) return; - - WeightedSpanTerm prevTerm = prev; - WeightedSpanTerm newTerm = value; - if (!prevTerm.IsPositionSensitive()) - { - newTerm.SetPositionSensitive(false); - } - } - - } - - public bool ExpandMultiTermQuery - { - set { this.expandMultiTermQuery = value; } - get { return expandMultiTermQuery; } - } - - public bool IsCachedTokenStream - { - get { return cachedTokenStream; } - } - - public TokenStream TokenStream - { - get { return tokenStream; } - } - - - /// <summary> - /// By default, <see cref="Analysis.TokenStream"/>s that are not of the type - /// <see cref="CachingTokenFilter"/> are wrapped in a <see cref="CachingTokenFilter"/> to - /// <see cref="Analysis.TokenStream"/> impl and you don't want it to be wrapped, set this to - /// false. - /// </summary> - public void SetWrapIfNotCachingTokenFilter(bool wrap) - { - this.wrapToCaching = wrap; - } - - /// <summary> - /// A fake IndexReader class to extract the field from a MultiTermQuery - /// </summary> - protected internal sealed class FakeReader : FilterIndexReader - { - - private static IndexReader EMPTY_MEMORY_INDEX_READER = new MemoryIndex().CreateSearcher().IndexReader; - - public String Field { get; private set; } - - protected internal FakeReader() - : base(EMPTY_MEMORY_INDEX_READER) - { - - } - - public override TermEnum Terms(Term t) - { - // only set first fieldname, maybe use a Set? - if (t != null && Field == null) - Field = t.Field; - return base.Terms(t); - } - - - } - } -} http://git-wip-us.apache.org/repos/asf/lucenenet/blob/02362804/src/contrib/Highlighter/WeightedTerm.cs ---------------------------------------------------------------------- diff --git a/src/contrib/Highlighter/WeightedTerm.cs b/src/contrib/Highlighter/WeightedTerm.cs deleted file mode 100644 index cfe3e12..0000000 --- a/src/contrib/Highlighter/WeightedTerm.cs +++ /dev/null @@ -1,44 +0,0 @@ -/* - * 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. - */ - -using System; - -namespace Lucene.Net.Search.Highlight -{ - /// <summary> - /// Lightweight class to hold term and a Weight value used for scoring this term - /// </summary> - public class WeightedTerm - { - public WeightedTerm(float weight, String term) - { - this.Weight = weight; - this.Term = term; - } - - /// <summary> - /// the term value (stemmed) - /// </summary> - public string Term { get; set; } - - /// <summary> - /// the Weight associated with this term - /// </summary> - /// <value> </value> - public float Weight { get; set; } - } -} \ No newline at end of file http://git-wip-us.apache.org/repos/asf/lucenenet/blob/02362804/src/contrib/Memory/CollectionsHelper.cs ---------------------------------------------------------------------- diff --git a/src/contrib/Memory/CollectionsHelper.cs b/src/contrib/Memory/CollectionsHelper.cs deleted file mode 100644 index 4fdcd98..0000000 --- a/src/contrib/Memory/CollectionsHelper.cs +++ /dev/null @@ -1,105 +0,0 @@ -/* - * - * 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. - * -*/ - -using System; -using System.Collections; -using System.Collections.Generic; -using System.Linq; -using System.Text; - -namespace Lucene.Net.Index.Memory -{ - internal static class CollectionsHelper<T> - { - private static readonly T[] EmptyArray = new T[0]; - - /// <summary> - /// Returns an empty list of type T - /// </summary> - public static IList<T> EmptyList() - { - return EmptyArray; - } - } - - public static class CollectionsExtensions - { - public static ICollection<T> AsReadOnly<T>(this ICollection<T> collection) - { - return new ReadOnlyCollection<T>(collection); - } - - private sealed class ReadOnlyCollection<T> : ICollection<T> - { - private readonly ICollection<T> _other; - - public ReadOnlyCollection(ICollection<T> other) - { - _other = other; - } - - public IEnumerator<T> GetEnumerator() - { - return _other.GetEnumerator(); - } - - IEnumerator IEnumerable.GetEnumerator() - { - return GetEnumerator(); - } - - public void Add(T item) - { - throw new NotSupportedException("Collection is read only!"); - } - - public void Clear() - { - throw new NotSupportedException("Collection is read only!"); - } - - public bool Contains(T item) - { - return _other.Contains(item); - } - - public void CopyTo(T[] array, int arrayIndex) - { - _other.CopyTo(array, arrayIndex); - } - - public bool Remove(T item) - { - throw new NotSupportedException("Collection is read only!"); - } - - public int Count - { - get { return _other.Count; } - } - - public bool IsReadOnly - { - get { return true; } - } - } - } -} http://git-wip-us.apache.org/repos/asf/lucenenet/blob/02362804/src/contrib/Memory/Contrib.Memory.csproj ---------------------------------------------------------------------- diff --git a/src/contrib/Memory/Contrib.Memory.csproj b/src/contrib/Memory/Contrib.Memory.csproj deleted file mode 100644 index 030890a..0000000 --- a/src/contrib/Memory/Contrib.Memory.csproj +++ /dev/null @@ -1,128 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<!-- - - 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. - ---> -<Project ToolsVersion="4.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> - <Import Project="$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props" Condition="Exists('$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props')" /> - <PropertyGroup> - <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration> - <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform> - <ProjectGuid>{112B9A7C-29CC-4539-8F5A-45669C07CD4D}</ProjectGuid> - <AppDesignerFolder>Properties</AppDesignerFolder> - <RootNamespace>Lucene.Net.Index.Memory</RootNamespace> - <AssemblyName>Lucene.Net.Contrib.Memory</AssemblyName> - <FileAlignment>512</FileAlignment> - <TargetFrameworkProfile /> - </PropertyGroup> - <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' "> - <TargetFrameworkVersion>v4.0</TargetFrameworkVersion> - <Framework>$(TargetFrameworkVersion.Replace("v", "NET").Replace(".", ""))</Framework> - <OutputPath>..\..\..\build\bin\contrib\Memory\$(Configuration.Replace("35", ""))\$(Framework)\</OutputPath> - <DebugSymbols>true</DebugSymbols> - <DebugType>full</DebugType> - <Optimize>false</Optimize> - <DefineConstants>DEBUG;TRACE;$(Framework)</DefineConstants> - <ErrorReport>prompt</ErrorReport> - <WarningLevel>4</WarningLevel> - <OutputType>Library</OutputType> - </PropertyGroup> - <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug35|AnyCPU' "> - <TargetFrameworkVersion>v3.5</TargetFrameworkVersion> - <Framework>$(TargetFrameworkVersion.Replace("v", "NET").Replace(".", ""))</Framework> - <OutputPath>..\..\..\build\bin\contrib\Memory\$(Configuration.Replace("35", ""))\$(Framework)\</OutputPath> - <DebugSymbols>true</DebugSymbols> - <DebugType>full</DebugType> - <Optimize>false</Optimize> - <DefineConstants>DEBUG;TRACE;$(Framework)</DefineConstants> - <ErrorReport>prompt</ErrorReport> - <WarningLevel>4</WarningLevel> - <OutputType>Library</OutputType> - </PropertyGroup> - <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' "> - <TargetFrameworkVersion>v4.0</TargetFrameworkVersion> - <Framework>$(TargetFrameworkVersion.Replace("v", "NET").Replace(".", ""))</Framework> - <OutputPath>..\..\..\build\bin\contrib\Memory\$(Configuration.Replace("35", ""))\$(Framework)\</OutputPath> - <DebugType>pdbonly</DebugType> - <Optimize>true</Optimize> - <DefineConstants>TRACE;$(Framework)</DefineConstants> - <DocumentationFile>..\..\..build\bin\contrib\Memory\$(Configuration.Replace("35", ""))\$(Framework)\Lucene.Net.Contrib.Memory.XML</DocumentationFile> - <ErrorReport>prompt</ErrorReport> - <WarningLevel>4</WarningLevel> - <DebugSymbols>true</DebugSymbols> - <OutputType>Library</OutputType> - </PropertyGroup> - <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release35|AnyCPU' "> - <TargetFrameworkVersion>v3.5</TargetFrameworkVersion> - <Framework>$(TargetFrameworkVersion.Replace("v", "NET").Replace(".", ""))</Framework> - <OutputPath>..\..\..\build\bin\contrib\Memory\$(Configuration.Replace("35", ""))\$(Framework)\</OutputPath> - <DebugType>pdbonly</DebugType> - <Optimize>true</Optimize> - <DefineConstants>TRACE;$(Framework)</DefineConstants> - <DocumentationFile>..\..\..build\bin\contrib\Memory\$(Configuration.Replace("35", ""))\$(Framework)\Lucene.Net.Contrib.Memory.XML</DocumentationFile> - <ErrorReport>prompt</ErrorReport> - <WarningLevel>4</WarningLevel> - <DebugSymbols>true</DebugSymbols> - <OutputType>Library</OutputType> - </PropertyGroup> - <PropertyGroup> - <SignAssembly>true</SignAssembly> - </PropertyGroup> - <PropertyGroup> - <AssemblyOriginatorKeyFile>Lucene.Net.snk</AssemblyOriginatorKeyFile> - </PropertyGroup> - <ItemGroup> - <Reference Include="System" /> - <Reference Condition="'$(Framework)' == 'NET35'" Include="System.Core" /> - <Reference Include="System.Core" /> - <Reference Include="System.Xml.Linq" /> - <Reference Include="System.Data.DataSetExtensions" /> - <Reference Include="Microsoft.CSharp" Condition="'$(Framework)' != 'NET35'" /> - <Reference Include="System.Data" /> - <Reference Include="System.Xml" /> - </ItemGroup> - <ItemGroup> - <Compile Include="CollectionsHelper.cs" /> - <Compile Include="EmptyCollector.cs" /> - <Compile Include="KeywordTokenStream.cs" /> - <Compile Include="MemoryIndex.cs" /> - <Compile Include="MemoryTermPositionVector.cs" /> - <Compile Include="Properties\AssemblyInfo.cs" /> - <Compile Include="TermComparer.cs" /> - <Compile Include="MemoryTermEnum.cs" /> - <Compile Include="MemoryTermPositions.cs" /> - </ItemGroup> - <ItemGroup> - <ProjectReference Include="..\..\core\Lucene.Net.csproj"> - <Project>{5d4ad9be-1ffb-41ab-9943-25737971bf57}</Project> - <Name>Lucene.Net</Name> - </ProjectReference> - </ItemGroup> - <ItemGroup> - <None Include="Lucene.Net.snk" /> - </ItemGroup> - <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" /> - <!-- To modify your build process, add your task inside one of the targets below and uncomment it. - Other similar extension points exist, see Microsoft.Common.targets. - <Target Name="BeforeBuild"> - </Target> - <Target Name="AfterBuild"> - </Target> - --> -</Project> \ No newline at end of file http://git-wip-us.apache.org/repos/asf/lucenenet/blob/02362804/src/contrib/Memory/EmptyCollector.cs ---------------------------------------------------------------------- diff --git a/src/contrib/Memory/EmptyCollector.cs b/src/contrib/Memory/EmptyCollector.cs deleted file mode 100644 index 022b3fe..0000000 --- a/src/contrib/Memory/EmptyCollector.cs +++ /dev/null @@ -1,65 +0,0 @@ -/* - * - * 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. - * -*/ - -using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; -using Lucene.Net.Search; - -namespace Lucene.Net.Index.Memory -{ - public partial class MemoryIndex - { - /// <summary> - /// Fills the given float array with the values - /// as the collector scores the search - /// </summary> - private sealed class FillingCollector : Collector - { - private readonly float[] _scores; - private Scorer _scorer; - - public FillingCollector(float[] scores) - { - _scores = scores; - } - - public override void SetScorer(Scorer scorer) - { - _scorer = scorer; - } - - public override void Collect(int doc) - { - _scores[0] = _scorer.Score(); - } - - public override void SetNextReader(IndexReader reader, int docBase) - { } - - public override bool AcceptsDocsOutOfOrder - { - get { return true; } - } - } - } -} http://git-wip-us.apache.org/repos/asf/lucenenet/blob/02362804/src/contrib/Memory/KeywordTokenStream.cs ---------------------------------------------------------------------- diff --git a/src/contrib/Memory/KeywordTokenStream.cs b/src/contrib/Memory/KeywordTokenStream.cs deleted file mode 100644 index 5e9a8e7..0000000 --- a/src/contrib/Memory/KeywordTokenStream.cs +++ /dev/null @@ -1,68 +0,0 @@ -/* - * - * 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. - * -*/ - -using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; -using Lucene.Net.Analysis; -using Lucene.Net.Analysis.Tokenattributes; - -namespace Lucene.Net.Index.Memory -{ - public partial class MemoryIndex - { - private sealed class KeywordTokenStream<T> : TokenStream - { - private IEnumerator<T> iter; - private int start = 0; - private ITermAttribute termAtt; - private IOffsetAttribute offsetAtt; - - public KeywordTokenStream(IEnumerable<T> keywords) - { - iter = keywords.GetEnumerator(); - termAtt = AddAttribute<ITermAttribute>(); - offsetAtt = AddAttribute<IOffsetAttribute>(); - } - - public override bool IncrementToken() - { - if (!iter.MoveNext()) return false; - - T obj = iter.Current; - if (obj == null) - throw new ArgumentException("keyword must not be null"); - - String term = obj.ToString(); - ClearAttributes(); - termAtt.SetTermBuffer(term); - offsetAtt.SetOffset(start, start + termAtt.TermLength()); - start += term.Length + 1; // separate words by 1 (blank) character - return true; - } - - protected override void Dispose(bool disposing) - { - } - } - } -}
