@Override public void registerTermSubQuery(String fieldname, TermSubQueryFactory termSubQueryFactory, Term sourceTerm) { if (sourceTerm.isGenerated()) { generatedFields.add(fieldname); } }
public boolean hasSearchField(String searchField, Term term) { String fieldname = term.getField(); if (fieldname != null) { return term.isGenerated() || (fieldname.equals(searchField) && queryFieldsAndBoostings.containsKey(fieldname)); } else { return term.isGenerated() ? generatedQueryFieldsAndBoostings.containsKey(searchField) : queryFieldsAndBoostings.containsKey(searchField); } }
public Set<String> getSearchFields(Term term) { String fieldname = term.getField(); if (fieldname != null) { if (term.isGenerated() || queryFieldsAndBoostings.containsKey(fieldname)) { return new HashSet<>(Collections.singletonList(fieldname)); } else { return Collections.emptySet(); } } else { return term.isGenerated() ? generatedQueryFieldsAndBoostings.keySet() : queryFieldsAndBoostings.keySet(); } }
@Override public Term clone(final DisjunctionMaxQuery newParent) { return clone(newParent, isGenerated()); }
@Override public Node visit(final Term term) { if (previousTerm != null && eq(previousTerm.getField(), term.getField()) && (term.isGenerated() == acceptGeneratedTerms || !term.isGenerated()) && (previousTerm.isGenerated() == acceptGeneratedTerms || !previousTerm.isGenerated())) { final CharSequence seq = new CompoundCharSequence(null, previousTerm, term); termsToAdd.add(buildShingle(previousTerm, seq)); termsToAdd.add(buildShingle(term, seq)); } previousTerm = term; return term; }
@Override public Node visit(Term term) { if (!term.isGenerated()) { try { sequencesStack.getLast().putTerm(term); } catch (IOException e) { throw new RuntimeException(e); } } return super.visit(term); }
@Override public Node visit(final Term term) { // don't handle generated terms if (!term.isGenerated()) { if (isReverseCompoundTriggerWord(term)) { termsToDelete.add(term); } else { decompound(term); compound(term); } previousTerms.add(term); } return term; }
public FieldBoost getFieldBoost(Term term) { String fieldname = term.getField(); if (fieldname != null) { if (term.isGenerated() ) { return new IndependentFieldBoost(generatedQueryFieldsAndBoostings, defaultGeneratedFieldBoostFactor); } if (queryFieldsAndBoostings.containsKey(fieldname)) { return new IndependentFieldBoost(queryFieldsAndBoostings, defaultGeneratedFieldBoostFactor); } } else { switch (fieldBoostModel) { case FIXED: return (term.isGenerated()) ? new IndependentFieldBoost(generatedQueryFieldsAndBoostings, defaultGeneratedFieldBoostFactor) : new IndependentFieldBoost(queryFieldsAndBoostings, defaultGeneratedFieldBoostFactor); case NONE: return ConstantFieldBoost.NORM_BOOST; case PRMS: return new PRMSFieldBoost(); default: throw new IllegalStateException("Unknown FieldBoostModel: " + fieldBoostModel); } } return null; }
@Override protected boolean matchesSafely(Term item) { return item != null && // expectedField == null -> do not compare field name. (expectedField == null || expectedField.equals(item.getField())) && // Using toString() here to avoid incompatibilities between // equals() of different char sequences. CharSequenceUtil.equals(expectedValue, item.getValue()) && // expectedValue.equals(item.getValue().toString()) && ((expectedGenerated == null) || (expectedGenerated.booleanValue() == item.isGenerated())) ; } }
if (fieldBoost == null) { if (fieldname != null && !term.isGenerated() && !searchFieldsAndBoosting.hasSearchField(fieldname, term)) {