@Override protected String hashQuery(SearchRequest q) { return q.getOriginalQuery(); } }
@Override public void writeResults(OutputStream os, SearchRequest q, String method, String iteration, int numberOfResults) throws IOException { final ResultSet rs = ((Request) q).getResultSet(); DataOutputStream dos = new DataOutputStream(os); dos.writeUTF(q.getQueryID()); ((Writable)rs).write(dos); dos.flush(); dos = null; logger.debug("Wrote " + rs.getResultSize() + " results for query " + q.getQueryID()); }
public SearchRequest search(String query, int rankingDepth) { System.err.println("Running search for '"+query+"' to depth "+rankingDepth); StringBuffer sb = new StringBuffer(); sb.append(query); Manager queryingManager = ManagerFactory.from(memIndex.getIndexRef()); SearchRequest srq = queryingManager.newSearchRequest("query", sb.toString()); srq.setOriginalQuery(sb.toString()); srq.setControl("decorate", "on"); queryingManager.runSearchRequest(srq); System.err.println("Returned "+srq.getResults().size()+" documents"); return srq; }
/** Returns the value of the control, or Default if not set. * @return the value. */ default String getControl(String Name, String Default) { return hasControl(Name) ? getControl(Name) : Default; }
@Override public SearchRequest newSearchRequest(String QueryID, String query) { SearchRequest srq = new RESTRequest(); srq.setQueryID(QueryID); srq.setOriginalQuery(query); return srq; }
ScoredDocList results = q.getResults(); final int maximum = _RESULTS_LENGTH > results.size() || _RESULTS_LENGTH == 0 ? results.size() : _RESULTS_LENGTH; final String[] metakeys = q.getResults().getMetaKeys(); JSONObject json = new JSONObject(); json.put("qid", q.getQueryID()); json.put("query", q.getOriginalQuery()); if (q instanceof Request)
@Test public void testRequirementsFields() throws Exception { ApplicationSetup.setProperty("FieldTags.process", "title,content"); Index index = IndexTestUtils.makeIndexFields( new String[]{"doc1", "doc2"}, new String[]{ "<title>Animal</title><content>The quick brown fox jumps over the lazy dog</content>", //doc1 "<title>Dog</title><content>how much is that animal in the window</content>"}); //doc2 Manager m = new LocalManager(index); SearchRequest srq = null; //4, are documents retrieved: two terms, one of which is negative requirement srq = m.newSearchRequest("test1", "dog -title:Animal"); srq.setControl(SearchRequest.CONTROL_WMODEL, PL2.class.getName()); srq.setControl(SearchRequest.CONTROL_MATCHING, getMatchingClass().getName()); m.runSearchRequest(srq); //System.err.println(srq.getResultSet().getResultSize()); /*for (int i =0; i<srq.getResultSet().getDocids().length; i++) { System.err.println(" "+srq.getResultSet().getDocids()[i]+" "+srq.getResultSet().getScores()[i]); }*/ assertEquals(1, srq.getResults().size()); assertEquals(1, srq.getResults().get(0).getDocid()); }
/** * According to the given parameters, it sets up the correct matching class. * @param queryId String the query identifier to use. * @param query String the query to process. */ public SearchRequest processQuery(String queryId, String query) { SearchRequest srq = queryingManager.newSearchRequest(queryId, query); if (matchopQl) { srq.setControl("parsecontrols", "off"); srq.setControl("parseql", "off"); srq.setControl("terrierql", "off"); srq.setControl("matchopql", "on"); } this.controls.forEach((k,v) -> srq.setControl(k, v)); matchingCount++; queryingManager.runSearchRequest(srq); return srq; }
@Override public void runSearchRequest(SearchRequest srq) { logger.info("Requesting results for query " + srq.getQueryID()); String url = null; try { srq.setStartedProcessingTime(System.currentTimeMillis()); url = ref.toString() + "/search/trec?" + "query=" + URLEncoder.encode(srq.getOriginalQuery(), "UTF-8"); final RESTRequest rrq = (RESTRequest) srq; Map<String, String> controls = rrq.controls; throw new RuntimeException("Could not access " + url, e); logger.info("Finished query " + srq.getQueryID());
ScoredDocList results = q.getResults(); final int maximum = _RESULTS_LENGTH > results.size() || _RESULTS_LENGTH == 0 ? results.size() : _RESULTS_LENGTH; final String queryIdExpanded = q.getQueryID() + " " + iteration + " "; final String methodExpanded = " " + method + ApplicationSetup.EOL;
@Test public void testOneDocumentSummaryField() throws Exception { Index index = createIndex(); Manager m = new LocalManager(index); ResultSet rs; Decorate decorate; SearchRequest srq; srq = performQuery(m, "lorem ipsum"); rs = ((Request) srq).getResultSet(); assertEquals(1, rs.getResultSize()); srq.setControl("emphasis", "abstract"); srq.setControl("summaries", "abstract"); decorate = new Decorate(); ((Request)srq).setOriginalQuery("field:since"); assertEquals("field:since", srq.getOriginalQuery()); decorate.new_query(m, srq, rs); decorate.filter(m, srq, rs, 0, rs.getDocids()[0]); assertEquals(3, rs.getMetaKeys().length); assertEquals("doc2", rs.getMetaItems("filename")[0]); assertTrue(rs.getMetaItems("abstract")[0].startsWith("Lorem Ipsum has been the industry's standard dummy text ever since")); assertTrue(rs.getMetaItems("abstract_emph")[0].startsWith("Lorem Ipsum has been the industry's standard dummy text ever <b>since</b>")); }
public ResultSet retrieve(String query) { StringBuffer sb = new StringBuffer(); sb.append(query); Manager queryingManager = new LocalManager((Index)index); SearchRequest srq = queryingManager.newSearchRequest("query", sb.toString()); srq.setControl(SearchRequest.CONTROL_WMODEL,"DirichletLM"); srq.setOriginalQuery(sb.toString()); queryingManager.runSearchRequest(srq); return ((Request) srq).getResultSet(); }
for(String summarykey : ArrayUtils.parseDelimitedString(q.getControl("summaries"),CONTROL_VALUE_DELIMS)) for(String emphKey : ArrayUtils.parseDelimitedString(q.getControl("emphasis"),CONTROL_VALUE_DELIMS)) for(String earlyKey : ArrayUtils.parseDelimitedString(q.getControl("earlyDecorate"),CONTROL_VALUE_DELIMS)) for(String escapeKey : ArrayUtils.parseDelimitedString(q.getControl("escape"),CONTROL_VALUE_DELIMS)) String original_q = q.getOriginalQuery(); if (original_q == null) metaKeys = keys.keys(new String[keys.size()]); qTerms = cleanQuery.matcher(q.getOriginalQuery()).replaceAll(" ").toLowerCase().split(" "); for(int p = 0; p < qTerms.length; p++) if(qTerms[p].contains(":"))
if (super.matchopQl) srq.setControl("parsecontrols", "off"); srq.setControl("parseql", "off"); srq.setControl("terrierql", "off"); srq.setControl("matchopql", "on"); this.controls.forEach((k,v) -> srq.setControl(k, v)); srq.setControl("c", Double.toString(cParameter)); } else if ((c = ApplicationSetup.getProperty("trec.c", null)) != null) { srq.setControl("c", c); if ((c = srq.getControl("c")).length() > 0) { c_set = true; srq.setControl("c_set", "" + c_set); srq.setControl(CONTROL_MATCHING, mModel); if (srq.getControl("qe").equals("on")) { srq.setControl("qemodel", defaultQEModel);
/** {@inheritDoc} */ public void new_query(Manager m, SearchRequest srq, ResultSet rs) { site = srq.getControl("site").toLowerCase(); }
String[] kvs = kv.split(":"); if (kvs.length == 2)//stop no value being a problem srq.setControl(kvs[0], kvs[1]); else System.err.println("invalid control="+ kv); srq.setControl(SearchRequest.CONTROL_WMODEL, wmodel); if (matching.length() > 0) srq.setControl(SearchRequest.CONTROL_MATCHING, matching); srq.setQueryID(qid);
List<ScoredDoc> results = q.getResults(); if (results.size() > RESULTS_LENGTH) results = results.subList(0, RESULTS_LENGTH-1);
@Override public SearchRequest newSearchRequestFromQuery(String query) { SearchRequest srq = new RESTRequest(); srq.setOriginalQuery(query); return srq; }
@Override public SearchRequest newSearchRequest(String QueryID) { SearchRequest srq = new RESTRequest(); srq.setQueryID(QueryID); return srq; }
ScoredDocList results = q.getResults(); final int maximum = _RESULTS_LENGTH > results.size() || _RESULTS_LENGTH == 0 ? results.size() : _RESULTS_LENGTH; final String[] metakeys = q.getResults().getMetaKeys(); JSONObject json = new JSONObject(); json.put("qid", q.getQueryID()); json.put("query", q.getOriginalQuery()); if (q instanceof Request)