> > 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