Как использовать парсер запросов disMax в solr

Что такое анализатор запросов dismax и как им пользоваться. Я просто хочу найти строку в поле в solr по проценту совпадения. как это сделать. Пожалуйста, приведите пример, как использовать анализатор запросов dismax. у меня есть следующий документ. и я просто получить документ, который полностью или частично совпадает с q=Jain Nagar Bla Bla

{
   "id":"2",
   "shipping_firstname":"Sudhanshu",
   "address":"H.No. 444, Gali No.2 Jain Nagar",
   "date_added":"2017-01-21T14:15:15Z",
   "_version_":1562029999829024768}]
}

Я использую этот запрос

select?q=Jain Nagar&defType=dismax&m‌​m=2&pf=address&qf=ad‌​dress

Почему это не дает никакого результата.


person Sudhanshu Jain    schedule 16.03.2017    source источник


Ответы (1)


Попробуйте mm (минимум должен совпадать) Параметр парсера dismax.

он имеет большую гибкость, чтобы указать целые числа или проценты к параметру мм.

Пример:

рассмотреть 3 документа

doc1: дубликат iPod, doc2: iPod apple, doc3: кабель iPod

Допустим, запрос ipod apple. он извлекает документы, если у него есть термин ipod или apple или оба. поэтому мы получаем 3 результата.

если мы используем mm=2 с парсером dismax

http://localhost:8983/solr/collection_name/select?indent=on&q=ipod apple&wt=json&defType=dismax&mm=2

Он получает минимальное совпадение документов из 2 слов, указанных в запросе ipod apple. если doc имеет только один термин (скажем, «ipod»), он не будет возвращен в результатах.

В результате мы получаем только один документ, т.е.

документ2

также можно указать процентные значения для параметра mm (например, 75% или -25%)

для получения более подробной информации см. Здесь< /а>

Надеюсь, это поможет, Винод

person Vinod    schedule 16.03.2017
comment
у меня есть адрес поля в документе с разными значениями адреса. и я пытаюсь этот запрос. и запрос похож на solr/orders/select?q=Jain%20Nagar&defType=dismax&indent=on&mm=2&pf=address&qf=address, он ничего не возвращает, но у меня есть H.No. 444, Gali No.2 Jain Nagar в поле адреса документа. Все, что я хочу сделать, это сделать частичный поиск. Это означает, что если некоторые слова в запросе совпадают в поле адреса, я хочу их отобразить. - person Sudhanshu Jain; 17.03.2017
comment
проверьте файл схемы на наличие поля адреса и определения его типа. это установить index=true. какие анализаторы использовались для этого fieldType? - person Vinod; 17.03.2017
comment
это как <field name="address" type="string" indexed="true" stored="true" multiValued="false" /> - person Sudhanshu Jain; 17.03.2017
comment
может быть строковый тип не анализируется. изменить тип другой тип поля, который имеет соответствующие анализаторы. попробуйте text_general/любой другой тип, использующий class=solr.TextField. помните, что если изменить схему, вы должны перезапустить solr и переиндексировать. - person Vinod; 17.03.2017
comment
У меня есть еще один вопрос. если address: H.No. 444, Gali No.2 Jain Nagar в документе и если q=Jian Nagar, то следует также учитывать, что Jian совпадает с Jain. Является ли это возможным..?? - person Sudhanshu Jain; 18.03.2017
comment
да. нечеткое совпадение строк. пример: q=jian~0.1 он ищет другой токен, у которого расстояние Левенштейна близко к 0,1 с термином jian. он будет соответствовать jain, значение должно быть от 0 до 1. - person Vinod; 20.03.2017