problem is that i am getting back all of the results with matches on
fieldCity, whether i  have a match on fieldText or not, and i want all
results to have at least one match on fieldText.

What i have now is basically: +city text1 text2 text3. The only term
required to match is the city. The rest of the term will impact the score,
but won't restrict the result set. If i want to make sure i get at least one
fieldText match, i could change the query to look more like this: +city
+(text1 text2 text3):

BooleanQuery fieldTextSubQuery = new BooleanQuery.Builder()
    .add(new WildcardQuery(new Term(fieldText, str), Occur.SHOULD)
    .add(new FuzzyQuery(new Term(fieldText, strTemp), fuzzy), Occur.SHOULD)
    .add(new FuzzyQuery(new Term(fieldText, mergedKeyword), fuzzy),
Occur.SHOULD)
    .build();

BooleanQuery finalQuery = new BooleanQuery.Builder()
    .add(new FuzzyQuery(new Term(fieldCity, city), 0), Occur.FILTER)
    .add(fieldTextSubQuery, Occur.MUST)
    .build();

When i changed my query to this.  Final one. I get results which i wanted



--
Sent from: http://lucene.472066.n3.nabble.com/Lucene-Java-Users-f532864.html

---------------------------------------------------------------------
To unsubscribe, e-mail: java-user-unsubscr...@lucene.apache.org
For additional commands, e-mail: java-user-h...@lucene.apache.org

Reply via email to