public void Read(BinaryReader rdr, bool includeSortKey) { if (rdr == null || rdr.BaseStream.Position == rdr.BaseStream.Length) { ID = int.MaxValue; PrimaryKeyID = int.MaxValue; FieldOrdinal = int.MaxValue; KeywordIndex = int.MaxValue; Fields = new HitField[0]; } else { if (includeSortKey) { ID = rdr.ReadInt32(); } else { ID = 0; } PrimaryKeyID = rdr.ReadInt32(); FieldOrdinal = rdr.ReadInt32(); KeywordIndex = rdr.ReadInt32(); byte fieldCount = rdr.ReadByte(); Fields = new HitField[fieldCount]; for (int i = 0; i < Fields.Length; i++) { Fields[i] = new HitField(rdr); } } }
internal Hit CloneOnlyFields(int id, int pkID, int fieldOrdinal, int keywordIndex) { Hit h = new Hit { ID = id, PrimaryKeyID = pkID, FieldOrdinal = fieldOrdinal, KeywordIndex = keywordIndex }; h.Fields = new HitField[this.Fields.Length]; for (int i = 0; i < this.Fields.Length; i++) { HitField hf = Fields[i]; h.Fields[i] = new HitField { FieldOrdinal = hf.FieldOrdinal, Value = hf.Value }; } return(h); }
internal Hit(int id, int primaryKeyID, int fieldOrdinal, int keywordOffset, List <Field> indexedFields) { ID = id; PrimaryKeyID = primaryKeyID; FieldOrdinal = fieldOrdinal; KeywordIndex = keywordOffset; TemporaryIndexID = -1; if (indexedFields == null) { Fields = new HitField[0]; } else { Fields = new HitField[indexedFields.Count]; for (int i = 0; i < Fields.Length; i++) { Fields[i] = new HitField { FieldOrdinal = indexedFields[i].Ordinal, Value = Toolkit.ToInt32(indexedFields[i].Value, -1) }; } } }