Example #1
0
 /// <summary>
 /// Gets the candidates. 
 /// </summary>
 protected override IResult GetCandidates(IList<int> qseq, int maxcand)
 {
     // TODO store tsearch as an object property
     ITThresholdAlgorithm tsearch = new NTTArray8 (-1, false);
     // ITThresholdAlgorithm tsearch = new MergeTThreshold ();
     // int maxcand = Math.Abs (this.Maxcand);
     var len_qseq = qseq.Count;
     var lists = new IList<int>[ len_qseq];
     for (int i = 0; i < len_qseq; ++i) {
         var rs = this.SEQ.Unravel (qseq [i]);
         lists [i] = new SortedListRSCache (rs, -i + len_qseq);
     }
     // lists [len_qseq] = new ListGen<int> ((int i) => i * knrbound, (int)Math.Ceiling(this.seqindex.Count * 1.0 / knrbound));
     IList<int> __C_docs;
     IList<short> __C_sim;
     tsearch.SearchTThreshold (lists, 1, out __C_docs, out __C_sim);
     var res = new ResultTies (Math.Abs (maxcand), false);
     for (int i = 0; i < __C_docs.Count; ++i) {
         var docid = __C_docs [i] - len_qseq;
         docid = docid / this.K;
         var sim = -__C_sim [i];
         res.Push (docid, sim);
     }
     return res;
 }
Example #2
0
 protected virtual IList<IList<int>> GetPostingLists(IList<string> q)
 {
     var posting_lists = new List<IList<int>> ();
     for (int i = 0; i < q.Count; ++i) {
         int symbol;
         if (q[i] != null && this.GetWordId (q [i], out symbol)) {
             var rs = this.Seq.Unravel (symbol);
             var L = new SortedListRSCache (rs, -i);
             posting_lists.Add (L);
         }
     }
     return posting_lists;
 }
Example #3
0
 protected virtual IList<IList<int>> GetPostingLists(QueryParser qparser)
 {
     var posting_lists = new List<IList<int>> ();
     for (int i = 0; i < qparser.Query.Count; ++i) {
         int symbol;
         if (qparser.Query[i] != null && this.RankVoc (qparser.Query [i], out symbol)) {
             var rs = this.Seq.Unravel (symbol);
             var L = new SortedListRSCache (rs, -i);
             posting_lists.Add (L);
         }
     }
     return posting_lists;
 }
Example #4
0
 protected virtual IResult GetCandidates(int[] qseq, int maxcand)
 {
     //			var n = this.DB.Count;
     //			if (n < 500000) {
     //				//return this.GetCandidatesSmallDB (qseq, maxcand);
     //			}
     var len_qseq = qseq.Length;
     var ialg = new BaezaYatesIntersection<int> (new DoublingSearch<int> ());
     IList<int> C = new SortedListRSCache (this.SEQ.Unravel (qseq [0]));
     int i = 1;
     while (i < len_qseq && C.Count > maxcand) {
         var rs = this.SEQ.Unravel (qseq [i]);
         var I = new SortedListRSCache (rs, -i);
         var L = new List<IList<int>> () {C, I};
         var tmp = ialg.Intersection (L);
         ++i;
         if (tmp.Count < maxcand) {
             break;
         }
         C = tmp;
     }
     var res = new ResultTies (int.MaxValue, false);
     foreach (var c in C) {
         if (c % this.K == 0) {
             res.Push (c / this.K, 0);
         }
     }
     return res;
 }
Example #5
0
 public override void Load(BinaryReader Input)
 {
     base.Load (Input);
     int m = Input.ReadInt32();
     this.CENTERS = new int[m];
     this.COV = new float[m];
     // PrimitiveIO<int>.ReadFromFile(Input, m, this.CENTERS);
     PrimitiveIO<float>.ReadFromFile(Input, m, this.COV);
     this.SEQ = RankSelectSeqGenericIO.Load(Input);
     var L = new SortedListRSCache(this.SEQ.Unravel(this.SEQ.Sigma - 1));
     this.CENTERS = new List<int>(L);
 }