public override void Norms(System.String field, byte[] result, int offset) { lock (this) { EnsureOpen(); byte[] bytes = (byte[])normsCache[field]; for (int i = 0; i < subReaders.Length; i++) { // read from segments subReaders[i].Norms(field, result, offset + starts[i]); } if (bytes == null && !HasNorms(field)) { for (int i = offset; i < result.Length; i++) { result[i] = (byte)DefaultSimilarity.EncodeNorm(1.0f); } } else if (bytes != null) { // cache hit Array.Copy(bytes, 0, result, offset, MaxDoc()); } else { for (int i = 0; i < subReaders.Length; i++) { // read from segments subReaders[i].Norms(field, result, offset + starts[i]); } } } }
public static void CheckNorms(IndexReader reader) { // test omit norms for (int i = 0; i < DocHelper.fields.Length; i++) { IFieldable f = DocHelper.fields[i]; if (f.IsIndexed) { Assert.AreEqual(reader.HasNorms(f.Name, null), !f.OmitNorms); Assert.AreEqual(reader.HasNorms(f.Name, null), !DocHelper.noNorms.Contains(f.Name)); if (!reader.HasNorms(f.Name, null)) { // test for fake norms of 1.0 or null depending on the flag byte[] norms = reader.Norms(f.Name, null); byte norm1 = DefaultSimilarity.EncodeNorm(1.0f); Assert.IsNull(norms); norms = new byte[reader.MaxDoc]; reader.Norms(f.Name, norms, 0, null); for (int j = 0; j < reader.MaxDoc; j++) { Assert.AreEqual(norms[j], norm1); } } } } }
internal static byte[] CreateFakeNorms(int size) { byte[] ones = new byte[size]; byte val = DefaultSimilarity.EncodeNorm(1.0f); for (int index = 0; index < size; index++) ones [index] = val; return ones; }
internal static byte[] CreateFakeNorms(int size) { byte[] ones = new byte[size]; byte val = DefaultSimilarity.EncodeNorm(1.0f); for (int index = 0; index < size; index++) { ones.SetValue(val, index); } return(ones); }