protected override IResult GetCandidates(int[] qseq, int maxcand)
{
var len_qseq = qseq.Length;
var C = new Dictionary<int,int> ();
// var omega = this.IndexRefs.MainSpace.Count >> 1;
var omega = len_qseq << 5;
// var omega = qseq.Count;
// var omega = 0;
for (int i = 0; i < len_qseq; ++i) {
var rs = this.SEQ.Unravel (qseq [i]);
var count1 = rs.Count1;
for (int s = 1; s <= count1; ++s) {
var pos = rs.Select1 (s);
var docid = pos / this.K;
var internal_position = pos - docid * this.K; // pos % this.K
int dist;
if (!C.TryGetValue (docid, out dist)) {
dist = len_qseq * omega;
}
var d = Math.Abs (i - internal_position);
C [docid] = dist + d - omega;
}
}
var res = new ResultTies (Math.Abs (maxcand));
foreach (var pair in C) {
res.Push (pair.Key, pair.Value);
}
return res;
}