private void InitBlock(AnonymousClassAnalyzer1 enclosingInstance) { this.enclosingInstance = enclosingInstance; termAtt = (TermAttribute)AddAttribute(typeof(TermAttribute)); payloadAtt = (PayloadAttribute)AddAttribute(typeof(PayloadAttribute)); posIncrAtt = (PositionIncrementAttribute)AddAttribute(typeof(PositionIncrementAttribute)); }
private void InitBlock(AnonymousClassAnalyzer1 enclosingInstance) { this.enclosingInstance = enclosingInstance; termAtt = (TermAttribute) AddAttribute(typeof(TermAttribute)); payloadAtt = (PayloadAttribute) AddAttribute(typeof(PayloadAttribute)); posIncrAtt = (PositionIncrementAttribute) AddAttribute(typeof(PositionIncrementAttribute)); }
private void InitBlock(AnonymousClassAnalyzer1 enclosingInstance) { this.enclosingInstance = enclosingInstance; termAtt = AddAttribute<ITermAttribute>(); payloadAtt = AddAttribute<IPayloadAttribute>(); posIncrAtt = AddAttribute<IPositionIncrementAttribute>(); }
public virtual void TestTokenReuse() { Analyzer analyzer = new AnonymousClassAnalyzer1(this); IndexWriter writer = new IndexWriter(dir, analyzer, true, IndexWriter.MaxFieldLength.LIMITED); Document doc = new Document(); doc.Add(new Field("f1", "a 5 a a", Field.Store.YES, Field.Index.ANALYZED)); writer.AddDocument(doc); writer.Flush(); SegmentInfo info = writer.NewestSegment(); writer.Close(); SegmentReader reader = SegmentReader.Get(info); TermPositions termPositions = reader.TermPositions(new Term("f1", "a")); Assert.IsTrue(termPositions.Next()); int freq = termPositions.Freq(); Assert.AreEqual(3, freq); Assert.AreEqual(0, termPositions.NextPosition()); Assert.AreEqual(true, termPositions.IsPayloadAvailable()); Assert.AreEqual(6, termPositions.NextPosition()); Assert.AreEqual(false, termPositions.IsPayloadAvailable()); Assert.AreEqual(7, termPositions.NextPosition()); Assert.AreEqual(false, termPositions.IsPayloadAvailable()); }
private void InitBlock(AnonymousClassAnalyzer1 enclosingInstance) { this.enclosingInstance = enclosingInstance; termAtt = AddAttribute <ITermAttribute>(); payloadAtt = AddAttribute <IPayloadAttribute>(); posIncrAtt = AddAttribute <IPositionIncrementAttribute>(); }
internal AnonymousClassTokenFilter(AnonymousClassAnalyzer1 enclosingInstance, Lucene.Net.Analysis.TokenStream Param1):base(Param1) { InitBlock(enclosingInstance); }
internal AnonymousClassTokenFilter(AnonymousClassAnalyzer1 enclosingInstance, Lucene.Net.Analysis.TokenStream Param1) : base(Param1) { InitBlock(enclosingInstance); }
public virtual void TestDocumentsWriterExceptions() { Analyzer analyzer = new AnonymousClassAnalyzer1(this); for (int i = 0; i < 2; i++) { MockRAMDirectory dir = new MockRAMDirectory(); IndexWriter writer = new IndexWriter(dir, analyzer); //writer.setInfoStream(System.out); Document doc = new Document(); doc.Add(new Field("contents", "here are some contents", Field.Store.YES, Field.Index.TOKENIZED, Field.TermVector.WITH_POSITIONS_OFFSETS)); writer.AddDocument(doc); writer.AddDocument(doc); doc.Add(new Field("crash", "this should crash after 4 terms", Field.Store.YES, Field.Index.TOKENIZED, Field.TermVector.WITH_POSITIONS_OFFSETS)); doc.Add(new Field("other", "this will not get indexed", Field.Store.YES, Field.Index.TOKENIZED, Field.TermVector.WITH_POSITIONS_OFFSETS)); try { writer.AddDocument(doc); Assert.Fail("did not hit expected exception"); } catch (System.IO.IOException) { } if (0 == i) { doc = new Document(); doc.Add(new Field("contents", "here are some contents", Field.Store.YES, Field.Index.TOKENIZED, Field.TermVector.WITH_POSITIONS_OFFSETS)); writer.AddDocument(doc); writer.AddDocument(doc); } writer.Close(); IndexReader reader = IndexReader.Open(dir); int expected = 3 + (1 - i) * 2; Assert.AreEqual(expected, reader.DocFreq(new Term("contents", "here"))); Assert.AreEqual(expected, reader.MaxDoc()); int numDel = 0; for (int j = 0; j < reader.MaxDoc(); j++) { if (reader.IsDeleted(j)) numDel++; else reader.Document(j); reader.GetTermFreqVectors(j); } reader.Close(); Assert.AreEqual(1, numDel); writer = new IndexWriter(dir, analyzer); writer.SetMaxBufferedDocs(10); doc = new Document(); doc.Add(new Field("contents", "here are some contents", Field.Store.YES, Field.Index.TOKENIZED, Field.TermVector.WITH_POSITIONS_OFFSETS)); for (int j = 0; j < 17; j++) writer.AddDocument(doc); writer.Optimize(); writer.Close(); reader = IndexReader.Open(dir); expected = 19 + (1 - i) * 2; Assert.AreEqual(expected, reader.DocFreq(new Term("contents", "here"))); Assert.AreEqual(expected, reader.MaxDoc()); numDel = 0; for (int j = 0; j < reader.MaxDoc(); j++) { if (reader.IsDeleted(j)) numDel++; else reader.Document(j); reader.GetTermFreqVectors(j); } reader.Close(); Assert.AreEqual(0, numDel); dir.Close(); } }
public virtual void TestSetPosition() { Analyzer analyzer = new AnonymousClassAnalyzer(this); RAMDirectory store = new RAMDirectory(); IndexWriter writer = new IndexWriter(store, analyzer, true); Document d = new Document(); d.Add(new Field("field", "bogus", Field.Store.YES, Field.Index.TOKENIZED)); writer.AddDocument(d); writer.Optimize(); writer.Close(); IndexSearcher searcher = new IndexSearcher(store); PhraseQuery q; Hits hits; q = new PhraseQuery(); q.Add(new Term("field", "1")); q.Add(new Term("field", "2")); hits = searcher.Search(q); Assert.AreEqual(0, hits.Length()); // same as previous, just specify positions explicitely. q = new PhraseQuery(); q.Add(new Term("field", "1"), 0); q.Add(new Term("field", "2"), 1); hits = searcher.Search(q); Assert.AreEqual(0, hits.Length()); // specifying correct positions should find the phrase. q = new PhraseQuery(); q.Add(new Term("field", "1"), 0); q.Add(new Term("field", "2"), 2); hits = searcher.Search(q); Assert.AreEqual(1, hits.Length()); q = new PhraseQuery(); q.Add(new Term("field", "2")); q.Add(new Term("field", "3")); hits = searcher.Search(q); Assert.AreEqual(1, hits.Length()); q = new PhraseQuery(); q.Add(new Term("field", "3")); q.Add(new Term("field", "4")); hits = searcher.Search(q); Assert.AreEqual(0, hits.Length()); // phrase query would find it when correct positions are specified. q = new PhraseQuery(); q.Add(new Term("field", "3"), 0); q.Add(new Term("field", "4"), 0); hits = searcher.Search(q); Assert.AreEqual(1, hits.Length()); // phrase query should fail for non existing searched term // even if there exist another searched terms in the same searched position. q = new PhraseQuery(); q.Add(new Term("field", "3"), 0); q.Add(new Term("field", "9"), 0); hits = searcher.Search(q); Assert.AreEqual(0, hits.Length()); // multi-phrase query should succed for non existing searched term // because there exist another searched terms in the same searched position. MultiPhraseQuery mq = new MultiPhraseQuery(); mq.Add(new Term[]{new Term("field", "3"), new Term("field", "9")}, 0); hits = searcher.Search(mq); Assert.AreEqual(1, hits.Length()); q = new PhraseQuery(); q.Add(new Term("field", "2")); q.Add(new Term("field", "4")); hits = searcher.Search(q); Assert.AreEqual(1, hits.Length()); q = new PhraseQuery(); q.Add(new Term("field", "3")); q.Add(new Term("field", "5")); hits = searcher.Search(q); Assert.AreEqual(1, hits.Length()); q = new PhraseQuery(); q.Add(new Term("field", "4")); q.Add(new Term("field", "5")); hits = searcher.Search(q); Assert.AreEqual(1, hits.Length()); q = new PhraseQuery(); q.Add(new Term("field", "2")); q.Add(new Term("field", "5")); hits = searcher.Search(q); Assert.AreEqual(0, hits.Length()); // analyzer to introduce stopwords and increment gaps Analyzer stpa = new AnonymousClassAnalyzer1(this); // should not find "1 2" because there is a gap of 1 in the index Lucene.Net.QueryParsers.QueryParser qp = new Lucene.Net.QueryParsers.QueryParser("field", stpa); q = (PhraseQuery) qp.Parse("\"1 2\""); hits = searcher.Search(q); Assert.AreEqual(0, hits.Length()); // omitted stop word cannot help because stop filter swallows the increments. q = (PhraseQuery) qp.Parse("\"1 stop 2\""); hits = searcher.Search(q); Assert.AreEqual(0, hits.Length()); // query parser alone won't help, because stop filter swallows the increments. qp.SetEnablePositionIncrements(true); q = (PhraseQuery) qp.Parse("\"1 stop 2\""); hits = searcher.Search(q); Assert.AreEqual(0, hits.Length()); bool dflt = StopFilter.GetEnablePositionIncrementsDefault(); try { // stop filter alone won't help, because query parser swallows the increments. qp.SetEnablePositionIncrements(false); StopFilter.SetEnablePositionIncrementsDefault(true); q = (PhraseQuery) qp.Parse("\"1 stop 2\""); hits = searcher.Search(q); Assert.AreEqual(0, hits.Length()); // when both qp qnd stopFilter propagate increments, we should find the doc. qp.SetEnablePositionIncrements(true); q = (PhraseQuery) qp.Parse("\"1 stop 2\""); hits = searcher.Search(q); Assert.AreEqual(1, hits.Length()); } finally { StopFilter.SetEnablePositionIncrementsDefault(dflt); } }
private void InitBlock(AnonymousClassAnalyzer1 enclosingInstance) { this.enclosingInstance = enclosingInstance; }