public virtual void TestOmitNormsCombos() { // indexed with norms FieldType customType = new FieldType(TextField.TYPE_STORED); Field norms = new Field("foo", "a", customType); // indexed without norms FieldType customType1 = new FieldType(TextField.TYPE_STORED); customType1.OmitNorms = true; Field noNorms = new Field("foo", "a", customType1); // not indexed, but stored FieldType customType2 = new FieldType(); customType2.Stored = true; Field noIndex = new Field("foo", "a", customType2); // not indexed but stored, omitNorms is set FieldType customType3 = new FieldType(); customType3.Stored = true; customType3.OmitNorms = true; Field noNormsNoIndex = new Field("foo", "a", customType3); // not indexed nor stored (doesnt exist at all, we index a different field instead) Field emptyNorms = new Field("bar", "a", customType); Assert.IsNotNull(GetNorms("foo", norms, norms)); Assert.IsNull(GetNorms("foo", norms, noNorms)); Assert.IsNotNull(GetNorms("foo", norms, noIndex)); Assert.IsNotNull(GetNorms("foo", norms, noNormsNoIndex)); Assert.IsNotNull(GetNorms("foo", norms, emptyNorms)); Assert.IsNull(GetNorms("foo", noNorms, noNorms)); Assert.IsNull(GetNorms("foo", noNorms, noIndex)); Assert.IsNull(GetNorms("foo", noNorms, noNormsNoIndex)); Assert.IsNull(GetNorms("foo", noNorms, emptyNorms)); Assert.IsNull(GetNorms("foo", noIndex, noIndex)); Assert.IsNull(GetNorms("foo", noIndex, noNormsNoIndex)); Assert.IsNull(GetNorms("foo", noIndex, emptyNorms)); Assert.IsNull(GetNorms("foo", noNormsNoIndex, noNormsNoIndex)); Assert.IsNull(GetNorms("foo", noNormsNoIndex, emptyNorms)); Assert.IsNull(GetNorms("foo", emptyNorms, emptyNorms)); }
/// <summary> /// Indexes at least 1 document with f1, and at least 1 document with f2. /// returns the norms for "field". /// </summary> internal virtual NumericDocValues GetNorms(string field, Field f1, Field f2) { Directory dir = NewDirectory(); IndexWriterConfig iwc = NewIndexWriterConfig(TEST_VERSION_CURRENT, new MockAnalyzer(Random())).SetMergePolicy(NewLogMergePolicy()); RandomIndexWriter riw = new RandomIndexWriter(Random(), dir, iwc); // add f1 Document d = new Document(); d.Add(f1); riw.AddDocument(d); // add f2 d = new Document(); d.Add(f2); riw.AddDocument(d); // add a mix of f1's and f2's int numExtraDocs = TestUtil.NextInt(Random(), 1, 1000); for (int i = 0; i < numExtraDocs; i++) { d = new Document(); d.Add(Random().NextBoolean() ? f1 : f2); riw.AddDocument(d); } IndexReader ir1 = riw.Reader; // todo: generalize NumericDocValues norms1 = MultiDocValues.GetNormValues(ir1, field); // fully merge and validate MultiNorms against single segment. riw.ForceMerge(1); DirectoryReader ir2 = riw.Reader; NumericDocValues norms2 = GetOnlySegmentReader(ir2).GetNormValues(field); if (norms1 == null) { Assert.IsNull(norms2); } else { for (int docID = 0; docID < ir1.MaxDoc(); docID++) { Assert.AreEqual(norms1.Get(docID), norms2.Get(docID)); } } ir1.Dispose(); ir2.Dispose(); riw.Dispose(); dir.Dispose(); return norms1; }
private void AddNoProxDoc(IndexWriter writer) { Document doc = new Document(); FieldType customType = new FieldType(TextField.TYPE_STORED); customType.IndexOptionsValue = IndexOptions.DOCS_ONLY; Field f = new Field("content3", "aaa", customType); doc.Add(f); FieldType customType2 = new FieldType(); customType2.Stored = true; customType2.IndexOptionsValue = IndexOptions.DOCS_ONLY; f = new Field("content4", "aaa", customType2); doc.Add(f); writer.AddDocument(doc); }