okay, thanks, for the answer. the thing is

when there is no *wordf**ield* in the *qf* param, but only *edgefield1* and
*edgefield2*, I get this parsedQuery

parsedQuery =
 +(DisjunctionMaxQuery(((edgefield1:musee)^1.1 | edgefield2:musee))
 DisjunctionMaxQuery(((edgefield1:maillol)^1.1 | edgefield2:maillol))
 DisjunctionMaxQuery(((edgefield1:61)^1.1 | edgefield2:61))
 DisjunctionMaxQuery(((edgefield1:r)^1.1 | edgefield2:r))
 DisjunctionMaxQuery(((edgefield1:grenelle)^1.1 | edgefield2:grenelle))
 DisjunctionMaxQuery(((edgefield1:75007)^1.1 | edgefield2:75007))
 DisjunctionMaxQuery(((edgefield1:paris)^1.1 | edgefield2:paris)))~7

and SolR does return documents

but when I have instead* wordf**ield* and *edgefield* in *qf*,  I get this
parsedQuery

parsedQuery =
>  "+DisjunctionMaxQuery((((wordfield:musee wordfield:maillol wordfield:61
>  Synonym(wordfield:r wordfield:ru wordfield:rue) wordfield:grenelle
>  wordfield:75007 wordfield:paris)~7)^1.1 | ((edgefield:musee
> edgefield:maillol
>  edgefield:61 edgefield:r edgefield:grenelle edgefield:75007
> edgefield:paris)~7)))"

and SolR does not return any documents.

That is what makes me thing there is something wrong with the second
parsedQuery.

Best regards,
Elisabeth



Le lun. 13 nov. 2023 à 20:15, Mikhail Khludnev <m...@apache.org> a écrit :

> >
> >  the first case listed in my mail
> > parsedQuery =
> >  "+DisjunctionMaxQuery((((wordfield:musee wordfield:maillol wordfield:61
> >  Synonym(wordfield:r wordfield:ru wordfield:rue) wordfield:grenelle
> >  wordfield:75007 wordfield:paris)~7)^1.1 | ((edgefield:musee
> > edgefield:maillol
> >  edgefield:61 edgefield:r edgefield:grenelle edgefield:75007
> > edgefield:paris)~7)))"
>
>
> > The OR is different, it is all words must match wordfield OR all words
> must
> > match edgefield, but no mix between the two fields are allowed.
>
>
> It doesn't work this way. These two queries differs only in scoring/results
> ordering. i.e
> this query matches  docs: {wordfield:musee, edgefield:musee} as well as {
> wordfield:musee,edgefield:maillol},   {wordfield:musee}, {
> edgefield:maillol}.
> This explanation might be useful
> https://lucidworks.com/post/solr-boolean-operators/
> Note: DisMax works like OR/| but takes max instead of sum as a score.
>
> On Mon, Nov 13, 2023 at 7:21 PM elisabeth benoit <
> elisaelisael...@gmail.com>
> wrote:
>
> > Hello,
> >
> > Thanks for your answer.
> >
> > I mean that in the second case listed in my mail, the query is
> > parsedQuery =
> >  +(DisjunctionMaxQuery(((edgefield1:musee)^1.1 | edgefield2:musee))
> >  DisjunctionMaxQuery(((edgefield1:maillol)^1.1 | edgefield2:maillol))
> >  DisjunctionMaxQuery(((edgefield1:61)^1.1 | edgefield2:61))
> >  DisjunctionMaxQuery(((edgefield1:r)^1.1 | edgefield2:r))
> >  DisjunctionMaxQuery(((edgefield1:grenelle)^1.1 | edgefield2:grenelle))
> >  DisjunctionMaxQuery(((edgefield1:75007)^1.1 | edgefield2:75007))
> >  DisjunctionMaxQuery(((edgefield1:paris)^1.1 | edgefield2:paris)))~7
> >
> > and so the way I read it is "musee" can match edgefield1 OR edgefield2,
> > "maillol" can match edgefield1 OR edgefield2, and so on, so solr can
> return
> > a doc where some query words match with edgefield1 and some other query
> > words with edgefield2.
> >
> > But in the first case listed in my mail
> >
> > parsedQuery =
> >  "+DisjunctionMaxQuery((((wordfield:musee wordfield:maillol wordfield:61
> >  Synonym(wordfield:r wordfield:ru wordfield:rue) wordfield:grenelle
> >  wordfield:75007 wordfield:paris)~7)^1.1 | ((edgefield:musee
> > edgefield:maillol
> >  edgefield:61 edgefield:r edgefield:grenelle edgefield:75007
> > edgefield:paris)~7)))"
> >
> > The OR is different, it is all words must match wordfield OR all words
> must
> > match edgefield, but no mix between the two fields are allowed.
> >
> > So I cannot search both fields at the same time.
> >
> > I hope this is clear!
> >
> > I would like to search both fields in same query.
> >
> > Best regards,
> > Elisabeth
> >
> > Le lun. 13 nov. 2023 à 17:02, Mikhail Khludnev <m...@apache.org> a
> écrit :
> >
> > > Hello Elisabeth.
> > > DisMax analyses user input across the given qf fields. If the number of
> > > resulting tokens are different it can't apply defaults logic - per word
> > sum
> > > over per field maximums; and flips to max over sums. The good news is
> > that
> > > the difference between two approaches is only scoring.
> > > WDYM exactly by absence of "matching words to be in two different
> > fields"?
> > >
> > > On Mon, Nov 13, 2023 at 5:01 PM elisabeth benoit <
> > > elisaelisael...@gmail.com>
> > > wrote:
> > >
> > > > Hello,
> > > >
> > > > I am using solr 7.3.1 with ExtendedDismaxQParser.
> > > >
> > > > I have a edgengrams field and a normal text field. When I mix those
> two
> > > in
> > > > the same query, ie *qf=edgefield wordfield* and use option
> > > *debugQuery=on*,
> > > > I see that the parsedQuery is different, ie all words should match
> the
> > > same
> > > > field.
> > > >
> > > > ie parsedQuery =
> > > >
> > > > "+DisjunctionMaxQuery((((wordfield:musee wordfield:maillol
> wordfield:61
> > > > Synonym(wordfield:r wordfield:ru wordfield:rue) wordfield:grenelle
> > > > wordfield
> > > > :75007 wordfield:paris)~7)^1.1 | ((edgefield:musee edgefield:maillol
> > > > edgefield:61 edgefield:r edgefield:grenelle edgefield:75007 edgefield
> > > > :paris)~7)))"
> > > >
> > > > When instead I use two edgefields with *qf=**edgefield1 **edgefield2*
> > > >
> > > > parsedQuery =
> > > > +(DisjunctionMaxQuery(((edgefield1:musee)^1.1 | edgefield2:musee))
> > > > DisjunctionMaxQuery(((edgefield1:maillol)^1.1 | edgefield2:maillol))
> > > > DisjunctionMaxQuery(((edgefield1:61)^1.1 | edgefield2:61))
> > > > DisjunctionMaxQuery(((edgefield1:r)^1.1 | edgefield2:r))
> > > > DisjunctionMaxQuery(((edgefield1:grenelle)^1.1 |
> edgefield2:grenelle))
> > > > DisjunctionMaxQuery(((edgefield1:75007)^1.1 | edgefield2:75007))
> > > > DisjunctionMaxQuery(((edgefield1:paris)^1.1 | edgefield2:paris)))~7
> > > >
> > > > In the second case, edismax allows matching words to be in two
> > different
> > > > fields, but not in first case.
> > > >
> > > > Is there a way to have the same behaviour, ie case two, in all cases?
> > > >
> > > > best regards,
> > > > Elisabeth
> > > >
> > >
> > >
> > > --
> > > Sincerely yours
> > > Mikhail Khludnev
> > >
> >
>
>
> --
> Sincerely yours
> Mikhail Khludnev
>

Reply via email to