@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); }
public void process(MatchingQueryTerms mqt, String modelName) { assert mqt != null; List<Operator> queryTerms = new ArrayList<>(); for(MatchingTerm e : mqt) { if (! ALLOWED_OP_TYPES.contains( e.getKey().getClass()) ) { continue; } Operator o = e.getKey().clone(); if (o instanceof SingleTermOp && ((SingleTermOp)o).getField() != null) { System.err.println("WARN: The query had fields for op "+o+" but proximity cannot have fields."); ((SingleTermOp)o).setField(null); } queryTerms.add(o); } if (queryTerms.size() < 2) return; List<MatchingTerm> newEntries = SD(modelName, queryTerms); //finally add the new entries mqt.addAll(newEntries); }
@Test public void testOne() { MatchingQueryTerms mqt = new MatchingQueryTerms(); mqt.add(QTPBuilder.of(new SingleTermOp("a")).build()); new DependenceModelPreProcess().process(mqt, "pBiL"); System.out.println(mqt.toString()); assertEquals(1, mqt.size()); }
public boolean expandQuery(MatchingQueryTerms mqt, Request rq) throws IOException { int count = mqt.size(); this.process(mqt, DEFAULT_DEPENDENCE_WEIGHTING_MODEL); return (mqt.size() != count); }
qtp.addWeightingModel(getModel(modelName,2)); qtp.setTag(DEPENDENCE_TAG).setTag(BaseMatching.BASE_MATCHING_TAG); newEntries.add(qtp.build()); qtp.addWeightingModel(getModel(modelName,8)); qtp.setTag(DEPENDENCE_TAG).setTag(BaseMatching.BASE_MATCHING_TAG);; newEntries.add(qtp.build()); QTPBuilder qtp = QTPBuilder.of(new UnorderedWindowOp(allTerms.toArray(new Operator[allTerms.size()]), 12)); qtp.setWeight(0.1d); qtp.addWeightingModel(getModel(modelName,12)); qtp.setTag(DEPENDENCE_TAG).setTag(BaseMatching.BASE_MATCHING_TAG);; newEntries.add(qtp.build());
@Test public void testSimple() { MatchingQueryTerms mqt = new MatchingQueryTerms(); mqt.setTermProperty("a", 1d); mqt.setTermProperty("b", 1d); assertEquals(2, mqt.size()); Request r = new Request(); r.setMatchingQueryTerms(mqt); new DependenceModelPreProcess().process(null, r); assertEquals(5, mqt.size()); }
public boolean expandQuery(MatchingQueryTerms mqt, Request rq) throws IOException { int count = mqt.size(); this.process(mqt, DEFAULT_DEPENDENCE_WEIGHTING_MODEL); return (mqt.size() != count); }
qtp.addWeightingModel(getModel(modelName,2)); qtp.setTag(DEPENDENCE_TAG).setTag(BaseMatching.BASE_MATCHING_TAG); newEntries.add(qtp.build()); qtp.addWeightingModel(getModel(modelName,8)); qtp.setTag(DEPENDENCE_TAG).setTag(BaseMatching.BASE_MATCHING_TAG);; newEntries.add(qtp.build()); QTPBuilder qtp = QTPBuilder.of(new UnorderedWindowOp(allTerms.toArray(new Operator[allTerms.size()]), 12)); qtp.setWeight(0.1d); qtp.addWeightingModel(getModel(modelName,12)); qtp.setTag(DEPENDENCE_TAG).setTag(BaseMatching.BASE_MATCHING_TAG);; newEntries.add(qtp.build());
@Test public void testTwo() { MatchingQueryTerms mqt = new MatchingQueryTerms(); mqt.add(QTPBuilder.of(new SingleTermOp("a")).build()); mqt.add(QTPBuilder.of(new SingleTermOp("b")).build()); new DependenceModelPreProcess().process(mqt, "pBiL"); System.out.println(mqt.toString()); assertEquals(5, mqt.size()); }
@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); }
public void process(MatchingQueryTerms mqt, String modelName) { assert mqt != null; List<Operator> queryTerms = new ArrayList<>(); for(MatchingTerm e : mqt) { if (! ALLOWED_OP_TYPES.contains( e.getKey().getClass()) ) { continue; } Operator o = e.getKey().clone(); if (o instanceof SingleTermOp && ((SingleTermOp)o).getField() != null) { System.err.println("WARN: The query had fields for op "+o+" but proximity cannot have fields."); ((SingleTermOp)o).setField(null); } queryTerms.add(o); } if (queryTerms.size() < 2) return; List<MatchingTerm> newEntries = SD(modelName, queryTerms); //finally add the new entries mqt.addAll(newEntries); }
@Test public void test13() { MatchingQueryTerms mqt = new MatchingQueryTerms(); for(int i=0;i<13;i++) { mqt.add(QTPBuilder.of(new SingleTermOp(String.valueOf(i))).build()); } new DependenceModelPreProcess().process(mqt, "pBiL"); System.out.println(mqt.toString()); int size = mqt.size(); Operator qt = mqt.get(size -1).getKey(); assertTrue(qt instanceof UnorderedWindowOp); UnorderedWindowOp uwt = (UnorderedWindowOp) qt; assertFalse( uwt.getConstituents().length > uwt.getDistance() ); }
@Test public void testThree() { MatchingQueryTerms mqt = new MatchingQueryTerms(); mqt.add(QTPBuilder.of(new SingleTermOp("a")).build()); mqt.add(QTPBuilder.of(new SingleTermOp("b")).build()); mqt.add(QTPBuilder.of(new SingleTermOp("c")).build()); new DependenceModelPreProcess().process(mqt, "pBiL"); System.out.println(mqt.toString()); assertEquals(8, mqt.size()); }
@Test public void testWithSyn() { MatchingQueryTerms mqt = new MatchingQueryTerms(); mqt.setTermProperty("a", 1d); mqt.add( QTPBuilder.of(new SynonymOp(new String[]{"b", "c"})) .setTag(BaseMatching.BASE_MATCHING_TAG) .build() ); assertEquals(2, mqt.size()); Request r = new Request(); r.setMatchingQueryTerms(mqt); new DependenceModelPreProcess().process(null, r); assertEquals(5, mqt.size()); for(MatchingTerm mt : mqt) { System.err.println(mt.getKey().toString() + " " + mt.getValue().toString()); } }