This _particular_ use case might be a good candidate for shingles.
That filter pairs up tuples into tokens, so your docs would have
A_B
A_C
A_C
B_D

and the search would be broken up (assuming the appropriate parameters
to ShingleFilterFacotry) to
X_A A_B B_Y
thus would match the specified doc only, assuming default operator of OR.

This wouldn't generalize for slop at all though.

Best,
Erick

On Sat, Nov 4, 2017 at 12:05 PM, Vincenzo D'Amore <v.dam...@gmail.com> wrote:
> Thanks Erick.
>
> Right, if there is no slop specified it is like have an "exact match".  So I 
> can simplify the query in:
>
> bq=field1:("X A" OR "A B" OR "B Y")^10
>
> I'm struggling to understand if there is any way to split the user query in 
> pairs directly with solr.
>
>> On Sat, Nov 4, 2017 at 6:32 PM, Erick Erickson <erickerick...@gmail.com> 
>> wrote:
>> Looks good to me. The only thing I'd mention is that in the example
>> given, complexprhase query is unnecessary, but only because there's no
>> "slop" specified. If by "near" you can also mean "within 3 words" or
>> some such, then you need complexPhraseQuery..
>>
>> FWIW,
>> Erick
>>
>> On Sat, Nov 4, 2017 at 10:12 AM, Vincenzo D'Amore <v.dam...@gmail.com> wrote:
>> > Hi,
>> >
>> > I have a field field1 where there are only pairs of terms, for example the
>> > documents
>> >
>> > doc1 { field1 : "A B", title : "Hello title 1" }
>> > doc2 { field1 : "A C", title : "Hello title 2"  }
>> > doc3 { field1 : "A D", title : "Hello title 3"  }
>> > doc4 { field1 : "B D", title : "Hello title 4"  }
>> >
>> > I have to boost the documents where there is a pair terms in the same order
>> > used in the query:
>> >
>> > To be clear, if I the user search four terms: X A B Y
>> >
>> > I have to check they are in a field:
>> >
>> > X near A, A near B,  B near Y:
>> >
>> > I've implemented this problem using complexphrase:
>> >
>> > bq={!complexphrase inOrder=true df=field1}("X A" OR "A B" OR "B Y")^10
>> >
>> > What do you think of this solution? Is there another solution, may be using
>> > a different query parser?
>> >
>> > Trying another way, I've also used with surround query parser, but I think,
>> > I was unable to write the query correctly, never matches.
>> >
>> > bq={!surround}field1:(W(X, A) OR W(A,B) OR W(B, Y))^10
>> >
>> > Not sure if this is the correct syntax, I've also not found enough
>> > documentation that explaining.
>> >
>> > Best regards,
>> > Vincenzo
>
>
>
> --
> Vincenzo D'Amore
> email: v.dam...@gmail.com
> skype: free.dev
> mobile: +39 349 8513251

Reply via email to