コード例 #1
0
ファイル: SearchDataI.cpp プロジェクト: bradenwu/oce
Str2StrMapSeq SearchDataI::search(const string& query, int begin, int limit)
{
  TimeCost tc = TimeCost::create("SearchDataI::Search",1);
  vector<string> words;
  splitWord(query,words);
  CollectorPtr collector = new Collector(100);
  if(StrUtil::mayPinyin(query,words)){
    MCE_DEBUG("start py search: " << query);
    vector<string> subStr(query.size());
    splitPY(query,0,0,subStr,collector);
    MCE_DEBUG("end py search");
  }
  ScorerPtr sp = hzIndex_.getScorer(words,words.size());
  if(sp == 0){ 
    MCE_DEBUG("zero");
  }else{
    MCE_DEBUG("get "<<sp.get());
    sp->score(collector);
  }
  vector<int> ids = collector->topDocs();
  int size = ids.size();
  if (size <= begin) {
    Str2StrMapSeq res;
    return res;
  }
  int total = begin + limit;
  if (total > size) {
    total = size;
  }

  Str2StrMapSeq res;
  for(int i = begin; i < total; ++i){
    res.push_back(stores_[ids[i]]);
  } 
  return res;
}