package edu.uncc.cs.watsonsim.researchers; import java.util.List; import java.util.regex.Matcher; import edu.uncc.cs.watsonsim.Answer; import edu.uncc.cs.watsonsim.Environment; import edu.uncc.cs.watsonsim.Passage; import edu.uncc.cs.watsonsim.Question; import edu.uncc.cs.watsonsim.search.*; /** * Search for documents having relevance to both the question and a candidate * answer. */ public class PassageRetrieval extends Researcher { private final Searcher[] searchers; public PassageRetrieval(Environment env, Searcher... searchers) { this.searchers = searchers; } @Override public List<Answer> question(Question q, List<Answer> answers) { int total_passages = answers.stream().mapToInt(a -> { // Query every engine int count = 0; for (Searcher s : searchers) { List<Passage> passages = s.query( q.text + " " + Matcher.quoteReplacement(a.text)); a.passages.addAll(passages); count += passages.size(); } return count; }).sum(); q.log.info("Found " + total_passages + " supporting passages."); return answers; } }