Branch: Tag:

2001-05-29

2001-05-29 12:01:16 by Johan Schön <js@opera.com>

Further query abstraction

Rev: lib/modules/Search.pmod/Query.pmod:1.4
Rev: lib/modules/Search.pmod/RankingProfile.pike:1.1

1:   mapping blob_done=([]);    - function(int:string) blobfeeder(Search.Database.MySQL db, array word_ids) + static function(int:string) blobfeeder(Search.Database.MySQL db, array word_ids)   {    mapping state = mkmapping(word_ids,allocate(sizeof(word_ids)));    return lambda( int word )
9:    };   }    - _WhiteFish.ResultSet test_query(Search.Database.MySQL db, array(string) words) +  + Search.ResultSet do_query_or(Search.Database.MySQL db, +  array(string) words, +  Search.RankingProfile ranking)   { -  +  array(int) word_ids=map(Array.uniq(words), db->hash_word); +  return _WhiteFish.do_query_or(word_ids, +  ranking->field_ranking, +  ranking->prox_ranking, +  ranking->cutoff, +  blobfeeder(db, word_ids)); + } +  + Search.ResultSet do_query_and(Search.Database.MySQL db, +  array(string) words, +  Search.RankingProfile ranking) + { +  array(int) word_ids=map(Array.uniq(words), db->hash_word); +  return _WhiteFish.do_query_or(word_ids, +  ranking->field_ranking, +  ranking->prox_ranking, +  ranking->cutoff, +  blobfeeder(db, word_ids)); + } +  + Search.ResultSet do_query_phrase(Search.Database.MySQL db, +  array(string) words, +  Search.RankingProfile ranking) + { +  array(int) word_ids=map(words, db->hash_word); +  return _WhiteFish.do_query_phrase(word_ids, +  ranking->field_ranking, +  // ranking->cutoff, +  blobfeeder(db, word_ids)); + } +  +  + /* Test stuff */ + Search.ResultSet test_query(Search.Database.MySQL db, array(string) words) + {    array(int) field_ranking=allocate(66);    field_ranking[0]=17; -  field_ranking[2]=47; +  field_ranking[2]=147;       array(int) prox_ranking=allocate(8);    for(int i=0; i<8; i++)    prox_ranking[i]=8-i;    -  return _WhiteFish.do_query_merge(map(words, hash), +  return _WhiteFish.do_query_and(map(words, hash),    field_ranking,    prox_ranking, -  +  8,    blobfeeder(db, map(words,hash) ));   }