It seems to me that all OOTB solution would include some query parsing on 
client side. 
If those are adjacent values, you could try play with shingles to get it to 
work. 
Brainstorming: custom token filter that would assign token occurrence number to 
each token: e.g.
“foo lock bar lock” would be indexed as foo1 lock1 bar1 lock2, but that would 
mess score…

Maybe there is something specific about your usecase that could be used to make 
it work.

Emir

> On 22 Sep 2017, at 15:17, Aman Deep Singh <amandeep.coo...@gmail.com> wrote:
> 
> Hi Emir,
> Thanks for the reply,
> I understand how the dismax/edismax works ,my problem is I don't want to
> show the results with one token only ,
> I cannot use phrase query here because the phrase query doesn't work with
> single word query so to do so we need to change the search request (qf or
> pf )dynamically ,will definitely try to use the function query.
> 
> Thanks,
> Aman Deep Singh
> 
> On 22-Sep-2017 6:25 PM, "Emir Arnautović" <emir.arnauto...@sematext.com>
> wrote:
> 
>> Hi Aman,
>> You have wrong expectations: Edismax does respect mm, it’s just that it is
>> met. If you take a look at parsed query, it’ll be something like:
>> +(((name:lock) (name:lock))~2)
>> And from dismax perspective it found both terms. It will not start
>> searching for the next term after first is found or look at term frequency.
>> You can use phrase query to make sure that lock is close to lock or use
>> function query to make sure tf requirement is met.
>> Not sure what is your usecase.
>> 
>> HTH,
>> Emir
>> 
>>> On 22 Sep 2017, at 12:52, Aman Deep Singh <amandeep.coo...@gmail.com>
>> wrote:
>>> 
>>> Hi,
>>> I'm using Solr 6.6.0 i have set mm as 100% but when i have the repeated
>>> search term then mm param is not honoured
>>> 
>>> I have 2 docs in index
>>> Doc1-
>>> name=lock
>>> Doc 2-
>>> name=lock lock
>>> 
>>> Now when i'm quering the solr with query
>>> *
>> http://localhost:8983/solr/test2/select?defType=dismax&qf=name&indent=on&mm=100%25&q=lock%20lock&wt=json
>>> <
>> http://localhost:8983/solr/test2/select?defType=dismax&qf=name&indent=on&mm=100%25&q=lock%20lock&wt=json
>>> *
>>> then it is returning both results but it should return only Doc 2 as no
>> of
>>> frequency is 2 in query while doc1 has frequency of 1 (lock term
>> frequency).
>>> Any Idea what to do ,to avoid getting doc 1 in resultset as i don't want
>>> user to get the Doc1.
>>> Schema
>>> <field name="name" type="text_word_delimiter" indexed="true"
>> stored="true"/>
>>> <fieldType name="text_word_delimiter" class="solr.TextField"
>>> autoGeneratePhraseQueries="false" positionIncrementGap="100"> <analyzer
>> type
>>> ="index"> <tokenizer class="solr.StandardTokenizerFactory"/> <filter
>> class=
>>> "solr.LowerCaseFilterFactory"/> </analyzer> <analyzer type="query"> <
>>> tokenizer class="solr.StandardTokenizerFactory"/> <filter class=
>>> "solr.ManagedSynonymFilterFactory" managed="synonyms_gdn"/> <filter
>> class=
>>> "solr.LowerCaseFilterFactory"/> </analyzer> </fieldType>
>>> 
>>> Their is no synonym is added also.
>>> 
>>> Thanks,
>>> Aman Deep Singh
>> 
>> 

Reply via email to