public override void handleRequest(CatRankSchema.SearchResultList.Reader request, CatRankSchema.SearchResultList.Builder response) { System.Collections.Generic.List <CatRank.ScoredResult> scoredResults = new System.Collections.Generic.List <CatRank.ScoredResult>(); foreach (CatRankSchema.SearchResult.Reader result in request.GetResults()) { double score = result.GetScore(); if (result.GetSnippet().ToString().Contains(" cat ")) { score *= 10000.0; } if (result.GetSnippet().ToString().Contains(" dog ")) { score /= 10000.0; } scoredResults.Add(new CatRank.ScoredResult(score, result)); } scoredResults.Sort(); StructList.Builder <CatRankSchema.SearchResult.Builder> list = response.InitResults(scoredResults.Count); for (int i = 0; i < list.Length; ++i) { CatRankSchema.SearchResult.Builder item = list.Get(i); CatRank.ScoredResult result = scoredResults[i]; item.SetScore(result.score); item.SetUrl(result.result.GetUrl()); item.SetSnippet(result.result.GetSnippet()); } }
public override int setupRequest(Common.FastRand rng, CatRankSchema.SearchResultList.Builder request) { int count = rng.nextLessThan(1000); int goodCount = 0; StructList.Builder <CatRankSchema.SearchResult.Builder> list = request.InitResults(count); for (int i = 0; i < list.Length; ++i) { CatRankSchema.SearchResult.Builder result = list.Get(i); result.SetScore(1000.0 - (double)i); int urlSize = rng.nextLessThan(100); int urlPrefixLength = URL_PREFIX.Length; Text.Builder url = result.InitUrl(urlSize + urlPrefixLength); java.nio.ByteBuffer bytes = url.asByteBuffer(); bytes.put(URL_PREFIX.asByteBuffer()); for (int j = 0; j < urlSize; j++) { bytes.put(unchecked ((byte)(97 + rng.nextLessThan(26)))); } bool isCat = rng.nextLessThan(8) == 0; bool isDog = rng.nextLessThan(8) == 0; if (isCat && !isDog) { goodCount += 1; } System.Text.StringBuilder snippet = new System.Text.StringBuilder(" "); int prefix = rng.nextLessThan(20); for (int j = 0; j < prefix; ++j) { snippet.Append(Common.WORDS[rng.nextLessThan(Common.WORDS.Length)]); } if (isCat) { snippet.Append("cat "); } if (isDog) { snippet.Append("dog "); } int suffix = rng.nextLessThan(20); for (int j = 0; j < suffix; ++j) { snippet.Append(Common.WORDS[rng.nextLessThan(Common.WORDS.Length)]); } result.SetSnippet(snippet.ToString()); } return(goodCount); }