lucene-java-user mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Tomoko Uchida <tomoko.uchida.1...@gmail.com>
Subject Re: FuzzyQuery
Date Mon, 10 Jun 2019 16:10:50 GMT
Hi,

I noticed one small thing in your previous mail.

> when i use q1 = parser.parse("street=\"MAIN\""); i get same results
which is good.

To specify a search field, ":" (colon) should be used instead of "=".
See the query parser documentation:
http://lucene.apache.org/core/8_1_0/queryparser/org/apache/lucene/queryparser/classic/package-summary.html#Fields

I'm not sure this is related to your problem.

2019年6月11日(火) 0:51 <baris.kazar@oracle.com>:
>
> booleanQuery.add(Utils.createPhraseQuery(phraseAnalyzer, field,
> "city=\"NASHUA\""), BooleanClause.Occur.MUST);
>          booleanQuery.add(Utils.createPhraseQuery(phraseAnalyzer, field,
> "region=\"NEW HAMPSHIRE\""), BooleanClause.Occur.MUST);
>          booleanQuery.add(Utils.createPhraseQuery(phraseAnalyzer, field,
> "country=\"UNITED STATES\""), BooleanClause.Occur.MUST);
>
>          org.apache.lucene.queryparser.classic.QueryParser parser = new
> org.apache.lucene.queryparser.classic.QueryParser(field, phraseAnalyzer) ;
>          Query q1 = null;
>          try {
>              q1 = parser.parse("MAIN");
>          } catch (ParseException e) {
>
>              e.printStackTrace();
>          }
>          booleanQuery.add(q1, BooleanClause.Occur.SHOULD);
>
> testQuerySearch2 Time to compute: 0 seconds
> Number of results: 1775
> Name: Main St
> Score: 37.20959
> ID: 12681979
> Country Code: US
> Coordinates: 42.76416, -71.46681
> Search Key: street="MAIN" city="NASHUA" municipality="HILLSBOROUGH"
> region="NEW HAMPSHIRE" country="UNITED STATES"
>
> Name: Main St
> Score: 37.20959
> ID: 12681977
> Country Code: US
> Coordinates: 42.747, -71.45957
> Search Key: street="MAIN" city="NASHUA" municipality="HILLSBOROUGH"
> region="NEW HAMPSHIRE" country="UNITED STATES"
>
> Name: Main St
> Score: 37.20959
> ID: 12681978
> Country Code: US
> Coordinates: 42.73492, -71.44951
> Search Key: street="MAIN" city="NASHUA" municipality="HILLSBOROUGH"
> region="NEW HAMPSHIRE" country="UNITED STATES"
>
>   when i use q1 = parser.parse("street=\"MAIN\""); i get same results
> which is good.
>
> But when i switch to MAINS~ then fuzzy query does not work.
>
>
> i need to say something with the q1 only in the booleanquery:
> it tries to match the MAIN in street, city, region and country which are
> in a single TextField field.
> But i dont want this. that is why i need to street="..." etc when searching.
>
> Best regards
>
>
>
> On 6/10/19 11:31 AM, Tomoko Uchida wrote:
> > Hi,
> >
> > just for the basic verification, can you find the document without
> > fuzzy query? I mean, does this query work for you?
> >
> > Query query = parser.parse("MAIN");
> >
> > Tomoko
> >
> > 2019年6月11日(火) 0:22 <baris.kazar@oracle.com>:
> >> why cant the second set not work at all?
> >>
> >> it is indexed as Textfield like street="..." city="..." etc.
> >>
> >> Best regards
> >>
> >>
> >>
> >> On 6/10/19 11:23 AM, baris.kazar@oracle.com wrote:
> >>> i dont know how to use Fuzzyquery with queryparser but probably You
> >>> are suggesting
> >>>
> >>> QueryParser parser = new QueryParser(field, analyzer) ;
> >>> Query query = parser.parse("MAINS~2");
> >>>
> >>> booleanQuery.add(query, BooleanClause.Occur.SHOULD);
> >>>
> >>> am i right?
> >>> Best regards
> >>>
> >>>
> >>> On 6/10/19 10:47 AM, Atri Sharma wrote:
> >>>> I would suggest using a QueryParser for your fuzzy query before
> >>>> adding it to the Boolean query. This should weed out any case issues.
> >>>>
> >>>> On Mon, 10 Jun 2019 at 8:06 PM, <baris.kazar@oracle.com
> >>>> <mailto:baris.kazar@oracle.com>> wrote:
> >>>>
> >>>>      BooleanQuery.Builder booleanQuery = new BooleanQuery.Builder();
> >>>>
> >>>>      //First set
> >>>>
> >>>>              booleanQuery.add(new FuzzyQuery(new
> >>>>      org.apache.lucene.index.Term(field, "MAINS")),
> >>>>      BooleanClause.Occur.SHOULD);
> >>>>      booleanQuery.add(Utils.createPhraseQuery(phraseAnalyzer, field,
> >>>>      "NASHUA"), BooleanClause.Occur.MUST);
> >>>>      booleanQuery.add(Utils.createPhraseQuery(phraseAnalyzer, field,
> >>>>      "NEW HAMPSHIRE"), BooleanClause.Occur.MUST);
> >>>>      booleanQuery.add(Utils.createPhraseQuery(phraseAnalyzer, field,
> >>>>      "UNITED STATES"), BooleanClause.Occur.MUST);
> >>>>
> >>>>      // Second set
> >>>>               //booleanQuery.add(new FuzzyQuery(new
> >>>>      org.apache.lucene.index.Term(field, "street=\"MAINS\"")),
> >>>>      BooleanClause.Occur.SHOULD);
> >>>> //booleanQuery.add(Utils.createPhraseQueryFullText(phraseAnalyzer,
> >>>>      field, "city=\"NASHUA\""), BooleanClause.Occur.MUST);
> >>>> //booleanQuery.add(Utils.createPhraseQueryFullText(phraseAnalyzer,
> >>>>      field, "region=\"NEW HAMPSHIRE\""), BooleanClause.Occur.MUST);
> >>>> //booleanQuery.add(Utils.createPhraseQueryFullText(phraseAnalyzer,
> >>>>      field, "country=\"UNITED STATES\""), BooleanClause.Occur.MUST);
> >>>>
> >>>>      The first set brings also street with Nashua name. (NASHUA).
> >>>>
> >>>>      so, to prevent that and since i also indexed with street="..."
> >>>>      city="..." i did the second set but it does not bring anything.
> >>>>
> >>>>      createPhraseQuery builds a Phrasequery with one term equal to the
> >>>>      string
> >>>>      in the call.
> >>>>
> >>>>      Best regards
> >>>>
> >>>>
> >>>>
> >>>>      On 6/10/19 10:47 AM, baris.kazar@oracle.com
> >>>>      <mailto:baris.kazar@oracle.com> wrote:
> >>>>      > How do i check how it is indexed? lowecase or uppercase?
> >>>>      >
> >>>>      > only way is now to by testing.
> >>>>      >
> >>>>      > i am using standardanalyzer.
> >>>>      >
> >>>>      > Best regards
> >>>>      >
> >>>>      >
> >>>>      > On 6/9/19 11:57 AM, Atri Sharma wrote:
> >>>>      >> On Sun, Jun 9, 2019 at 8:53 PM Tomoko Uchida
> >>>>      >> <tomoko.uchida.1111@gmail.com
> >>>>      <mailto:tomoko.uchida.1111@gmail.com>> wrote:
> >>>>      >>> Hi,
> >>>>      >>>
> >>>>      >>> What analyzer do you use for the text field? Is the
term "Main"
> >>>>      >>> correctly indexed?
> >>>>      >> Agreed. Also, it would be good if you could post your
actual
> >>>> code.
> >>>>      >>
> >>>>      >> What analyzer are you using? If you are using StandardAnalyzer,
> >>>>      then
> >>>>      >> all of your terms while indexing will be lowercased, AFAIK,
but
> >>>>      your
> >>>>      >> query will not be analyzed until you run a QueryParser
on it.
> >>>>      >>
> >>>>      >>
> >>>>      >> Atri
> >>>>      >>
> >>>>      >
> >>>>      >
> >>>>      >
> >>>> ---------------------------------------------------------------------
> >>>>      > To unsubscribe, e-mail: java-user-unsubscribe@lucene.apache.org
> >>>>      <mailto:java-user-unsubscribe@lucene.apache.org>
> >>>>      > For additional commands, e-mail:
> >>>>      java-user-help@lucene.apache.org
> >>>>      <mailto:java-user-help@lucene.apache.org>
> >>>>      >
> >>>>
> >>>
> >>
> >> ---------------------------------------------------------------------
> >> To unsubscribe, e-mail: java-user-unsubscribe@lucene.apache.org
> >> For additional commands, e-mail: java-user-help@lucene.apache.org
> >>
> > ---------------------------------------------------------------------
> > To unsubscribe, e-mail: java-user-unsubscribe@lucene.apache.org
> > For additional commands, e-mail: java-user-help@lucene.apache.org
> >
>

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


Mime
View raw message