Beispiel #1
0
        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]);
                    }
                }
            }
        }
Beispiel #2
0
 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);
                 }
             }
         }
     }
 }
Beispiel #3
0
        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;
        }
Beispiel #4
0
        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);
        }