public String[] getValues(Request rq, int[] targetIds) { final int n = targetIds.length; final String[] targetValues = new String[n]; try { String[] docnos = rq.getResultSet().getMetaItems("docno"); if (docnos == null) { final MetaIndex mi = rq.getIndex().getMetaIndex(); docnos = mi.getItems("docno", targetIds); } final String qid = TRECQrelsInMemory.parseTRECQueryNo(rq.getQueryID()); for (int i = 0; i < n; i++) { targetValues[i] = String.valueOf(qrels.getGrade(qid, docnos[i], Integer.valueOf(defLabel))); } return targetValues; } catch (IOException e) { e.printStackTrace(); } return null; }
boolean mqtObtained = rq.getMatchingQueryTerms() != null; boolean hasRawQuery = rq.getOriginalQuery() != null; boolean hasTerrierQLquery = rq.getQuery() != null; boolean hasResultSet = rq.getResultSet() != null; logger.debug(rq.getControls().toString()); Iterator<Process> iter = processModuleManager.getActiveIterator(rq.getControls()); List<String> processesDone = new ArrayList<String>(); int ran = 0; rq.setControl("runname", ""); while(iter.hasNext()) assert(p != null); if (hasAnnotation(p.getClass(), ManagerRequisite.MQT) && ! mqtObtained) throw new IllegalStateException("Process " + p.getInfo() + " required matchingqueryterms, but mqt not yet set for query qid " + rq.getQueryID() + " previousProcess=" + processesDone.toString() + " controls=" + rq.getControls().toString()); if (hasAnnotation(p.getClass(), ManagerRequisite.RAWQUERY) && ! hasRawQuery) throw new IllegalStateException("Process " + p.getInfo() + " required rawquery, but no raw query found for qid " + rq.getQueryID() + " previousProcess=" + processesDone.toString() + " controls=" + rq.getControls().toString()); if (hasAnnotation(p.getClass(), ManagerRequisite.TERRIERQL) && ! hasTerrierQLquery) throw new IllegalStateException("Process " + p.getInfo() + " required TerrierQL query, but no TerrierQL query found for qid " + rq.getQueryID() + " previousProcess=" + processesDone.toString() + " controls=" + rq.getControls().toString()); if (hasAnnotation(p.getClass(), ManagerRequisite.RESULTSET) && ! hasResultSet) throw new IllegalStateException("Process " + p.getInfo() + " required resultset, but none found for qid " + rq.getQueryID() + " previousProcess=" + processesDone.toString() + " controls=" + rq.getControls().toString()); hasTerrierQLquery = rq.getQuery() != null; mqtObtained = rq.getMatchingQueryTerms() != null; hasRawQuery = rq.getOriginalQuery() != null; hasResultSet = rq.getResultSet() != null; rq.setControl("previousprocess", p.getClass().getName()); rq.setControl("runname", rq.getControl("runname")+ "_" + p.getInfo()); processesDone.add(p.getInfo());
@Override public void process(Manager manager, Request rq) { if (rq.isEmpty() && ! MATCH_EMPTY_QUERY ) logger.warn("Returning empty result set as query "+rq.getQueryID()+" is empty"); rq.setResultSet(new QueryResultSet(0)); MatchingQueryTerms mqt = rq.getMatchingQueryTerms(); if (rq.getControl("c_set").equals("true")) wmodel.setParameter(Double.parseDouble(rq.getControl("c"))); Query q = rq.getQuery(); logger.info(mqt.toString()); mqt.normaliseTermWeights(); try{ ResultSet outRs = matching.match(rq.getQueryID(), mqt); rq.setResultSet(outRs.getResultSet(0, outRs.getResultSize()-badDocuments)); } catch (IOException ioe) { logger.error("Problem running Matching, returning empty result set as query "+rq.getQueryID(), ioe); rq.setResultSet(new QueryResultSet(0));
/** Set the default values for the controls of this new search request * @param srq The search request to have the default set to. This is * done using the Default_Controls table, which is loaded by the load_controls_default * method. The default are set in the properties file, by the <tt>querying.default.controls</tt> */ protected void setDefaults(Request srq) { srq.setControls(new HashMap<String,String>(Default_Controls)); srq.setIndex(this.index); } /**
@Override public SearchRequest newSearchRequest(String QueryID) { Request q = new Request(); if (Defaults_Size >0) setDefaults(q); q.setQueryID(QueryID); q.setIndex(this.index); return (SearchRequest)q; }
@Override public void process(Manager manager, Request rq) { Query query = rq.getQuery(); //get the controls //TODO: this is a hack boolean rtr = ! query.obtainControls(((LocalManager) manager).Allowed_Controls, rq.getControls()); //we check that there is still something left in the query if (! rtr) { rq.setEmpty(true); } }
public void add(SearchRequest q) { cache.put(hashQuery(q), ((Request) q).getResultSet()); }
Request q = new Request(); q.setQueryID("query1"); q.setIndex(index); try{ QueryParser.parseQuery(query1, q); q.setOriginalQuery(query1); Query query = q.getQuery(); mqt = new MatchingQueryTerms(q.getOriginalQuery(), q); q.setMatchingQueryTerms(mqt); q = new Request(); q.setQueryID("query2"); q.setIndex(index); try{ QueryParser.parseQuery(query2, q); q.setOriginalQuery(query2); query = q.getQuery(); mqt = new MatchingQueryTerms(q.getOriginalQuery(), q); q.setMatchingQueryTerms(mqt); q = new Request(); q.setQueryID("query3"); q.setIndex(index); try{
String iteration, int numberOfResults) throws IOException ResultSet rs = ((Request) q).getResultSet(); FeaturedResultSet frs = null; int f; MetaIndex meta = rq.getIndex().getMetaIndex();
/** * {@inheritDoc} */ public void new_query(Manager m, SearchRequest srq, ResultSet rs) { meta = ((Request)srq).getIndex().getMetaIndex(); decorateKeys = meta.getKeys(); }
@Override public void process(Manager manager, Request rq) { PostFilter[] filters = postfilterModuleManager.getActive(rq.getControls()).toArray(new PostFilter[0]); final int filters_length = filters.length; ResultSet results = rq.getResultSet(); String tmp = rq.getControl("start");/* 0 based */ if (tmp.length() == 0) tmp = "0"; int Start = Integer.parseInt(tmp); tmp = rq.getControl("end"); if (tmp.length() == 0) tmp = "0"; rq.setResultSet( results.getResultSet(Start, length) ); if (logger.isDebugEnabled()) { logger.debug("No filters, just Crop: "+Start+", length "+length); rq.setNumberOfDocumentsAfterFiltering(doccount); if (docatnumbers.size() < docids.length) rq.setResultSet( results.getResultSet(docatnumbers.toNativeArray())); rq.getResultSet().setExactResultSize(results.getExactResultSize());
/** Returns the weighting model requested by the Request from * the WeightingModel factory. * @param rq The name of the weighting model to instantiate */ protected static Model getWeightingModel(Request rq) { String wmodel = rq.getControl(CONTROL_WMODEL, ApplicationSetup.getProperty("trec.model", "DPH")); return WeightingModelFactory.newInstance(wmodel, rq.getIndex()); }
@Override public SearchRequest newSearchRequest(String QueryID, String query) { Request q = new Request(); if (Defaults_Size >0) setDefaults(q); q.setQueryID(QueryID); q.setIndex(this.index); // try{ // QueryParser.parseQuery(query, q); // } catch (QueryParserException qpe) { // logger.error("Error while parsing the query.",qpe); // } q.setOriginalQuery(query); return q; }
String qeModel = q.getControl("qemodel"); if (qeModel == null || qeModel.length() ==0) logger.info("query expansion model: " + QEModel.getInfo()); MatchingQueryTerms queryTerms = q.getMatchingQueryTerms(); if (queryTerms == null) logger.info("NEWQUERY "+q.getQueryID() +" "+newQuery.toString()); lastExpandedQuery = newQuery.toString(); q.setControl("QE.ExpandedQuery", newQuery.toString()); final boolean no2ndPass = Boolean.parseBoolean(ApplicationSetup.getProperty("qe.no.2nd.matching", "false")); if (no2ndPass) logger.info("Accessing inverted file for expanded query " + q.getQueryID()); ((LocalManager)manager).processModuleManager.getModule(q.getControl("previousprocess")).process(manager, q);
@Override public void process(Manager manager, Request rq) { MatchingQueryTerms queryTerms = new MatchingQueryTerms(rq.getQueryID(), rq); Query query = rq.getQuery(); query.obtainQueryTerms(QueryTermsParameter.of(queryTerms, lowercase)); for(MatchingTerm me : queryTerms) me.getValue().getTags().add(BaseMatching.BASE_MATCHING_TAG); rq.setMatchingQueryTerms(queryTerms); }
@Override public void process(Manager manager, Request q) { try{ List<MatchingTerm> terms = new org.terrier.matching.matchops.MatchOpQLParser(q.getOriginalQuery()).parseAll(); MatchingQueryTerms mqt = new MatchingQueryTerms(terms); q.setMatchingQueryTerms(mqt); mqt.setQueryId(q.getQueryID()); } catch (ParseException | TokenMgrError e) { throw new QueryParserException("Could not parse query", e); } }
@Override public void process(Manager manager, Request q) { logger.info("Applying " + this.getInfo()); Request rq = (Request) q; //make the current resultset into a FeaturedResultSet FeaturedResultSet rs = q.getResultSet() instanceof FeaturedResultSet ? (FeaturedResultSet) q.getResultSet() : new FeaturedQueryResultSet(q.getResultSet()); rq.setResultSet(rs); //add labels to the resultset int[] docids = rs.getDocids(); rs.setLabels(getValues(rq, docids)); rs.setDefaultLabel(defLabel); }
@Override public void process(Manager manager, SearchRequest q) { initialise(q); String modelName = q.getControl(CONTROL_MODEL); if (modelName == null || modelName.length() == 0) modelName = DEFAULT_DEPENDENCE_WEIGHTING_MODEL; String paramValue = q.getControl(CONTROL_MODEL_PARAM); param = paramValue != null && paramValue.length() > 0 ? Double.parseDouble(paramValue) : null; this.process(((Request)q).getMatchingQueryTerms(), modelName); }
@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>")); }
String queryid = request.getQueryID(); List<FeedbackWithDocno> list = queryidRelDocumentMap.get(queryid); doc.docid = metaIndex.getDocument("docno", doc.docno); } catch (IOException ioe) { logger.warn("IOException while looking for docid for feedback document "+doc.docno+" of query "+ request.getQueryID(), ioe); logger.warn("Could not find docid for feedback document "+doc.docno+" of query "+ request.getQueryID()); continue; rtrList.add(doc); logger.info("Found "+(rtrList.size())+" feedback documents for query "+request.getQueryID()); return rtrList.toArray(new FeedbackDocument[0]);