Как запросить Solr для получения документов, если он соответствует 50% строки запроса? - PullRequest
1 голос
/ 10 января 2020

Я использую Solr 7.6 со следующей структурой документа:

{
    "source_ln":"en",
    "source_text":"the sky is blue",
    "target_ln":"hi",
    "target_text":"आसमान नीला है",
},
{
    "source_ln":"en",
    "source_text":"the sky is also called the celestial sphere",
    "target_ln":"hi",
    "target_text":"आकाश को आकाशीय क्षेत्र भी कहा जाता है",
}

Все поля определены с помощью токенайзера StandardTokenizerFactory.

Когда я запрашиваю "source_text": "the sky ",

Набор результатов должен содержать только первый документ.

Во втором документе поле" source_text ":" небо также называется небесной сферой "содержит 8 терминов, а поле запроса "source_text": "небо" содержит только 2 условия, поэтому не менее 50% критериев соответствия не выполнены, и, следовательно, 2-й документ не будет в наборе результатов.

Есть ли способ получить документы, соответствующие не менее 50% терминов / токенов поля запроса?

Заранее спасибо.

Ответы [ 2 ]

1 голос
/ 10 января 2020

Вы можете настроить обработчик запросов на использование (e) dismax синтаксического анализатора запросов, например, используя параметр defType , например. ?q=...&defType=dismax.

Используя анализатор dismax, вы можете затем использовать параметр mm (минимум должен соответствовать) в соответствии с вашими потребностями, просто установив mm=50%.

0 голосов
/ 10 января 2020

Вы можете реализовать эти функции, выполнив следующие шаги.

  • Создайте отдельное поле в имени схемы "source_text_fifty", param (indexing = true, storing = false и не применяйте грамматику StandardTokenizerFactory введите или лучше создайте отдельное поле типа данных с помощью solr.KeywordTokenizerFactory).
  • Теперь вычислите 50% ваших входных данных при индексировании do c и сохраните эти вычисленные данные в поле «source_text_fifty».
  • Переиндексируйте все существующие данные с указанными выше логами c.
  • Запустите запрос с source_text_fifty: «небо». Теперь у вас есть только 50% совпадений.
...