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; }