public ArrayList<String> getRankedQueriesFormula2(String originalQuery) { ArrayList<String> rankedList = new ArrayList<String>(); GoogleSearch originalGs = new GoogleSearch(originalQuery); ArrayList<String> originalResults = originalGs.getTopK(); for (int i = 0; i < gsList.size(); i++) { int score = gsList.get(i).getTotalResults(); int matches = 0; int matchRankSum = 0; ArrayList<String> reformulatedResults = gsList.get(i).getTopK(); for (int j = 0; j < reformulatedResults.size(); j++) { for (int k = 0; k < originalResults.size(); k++) { if (reformulatedResults.get(j).equals(originalResults.get(k))) { matches++; // rank is set as 0, 1, ..., k-1 // so if total results = 10 and there is a match in the last document, // then matchRankSum += 1 matchRankSum += originalResults.size() - k; } } } if (matches == 0) score = 0; else score *= 1.0 / matches * matchRankSum; gsList.get(i).setScore(score); } Collections.sort(gsList); for (int i = 0; i < gsList.size(); i++) { rankedList.add(gsList.get(i).getQuery()); } return rankedList; }
/** @return the base url for searches. */ public String getSearchBaseUrl() { return mContext .getResources() .getString( R.string.google_search_base_pattern, getSearchDomain(), GoogleSearch.getLanguage(Locale.getDefault())); }