SOLR: eDisMax с вложенными документами

У нас есть индекс электронных книг, который содержит метаданные электронной книги и каждой страницы в виде одного документа:

  • Книга 1
    • Страница 1
    • Страница 2
    • Страница 3
    • ...
    • Страница n

Родительский документ содержит поле is_parent:true, id а также doc_id, Для родительских документов id совпадает с doc_id, для дочерних документов id является {doc_id}_{page_number}, doc_id всегда одинаково для родителя и его детей (именно так мы узнаем, какой ребенок принадлежит какому из родителей).

Поэтому теперь задача состоит в том, чтобы предложить полнотекстовый поиск, который использует eDisMax, чтобы найти наилучший результат для критерия поиска из метаданных родителей и контента детей и объединить их в значение оценки.

Текущий запрос выглядит так:

    'fl' => 'id,doc_id,main_type,title,subtitle,publishing_date,page_number,author,score',
    'defType' => 'edismax',
    'stopwords' => 'true',
    'mm' => '1',
    'qf' => 'id^10.0 title^50.0 subtitle^40.0 author^20.0',
    'q' => 'TEST _query_:"{!parent which=is_parent:true score=Max}{!dismax qf='content' v='TEST'}"^20',
    'sort' => 'score DESC'

Но, похоже, оценка _query_ не добавляется к оценке основного запроса. Кроме того, если я сделаю это без термина "TEST" в начале: 'q' => '_query_:"{!parent which=is_parent:true score=Max}{!dismax qf='content' v='TEST'}"^20', Я получаю значение балла - так что как-то счет есть, но я не уверен, как правильно его использовать.

Есть ли другой вариант для выполнения вложенного поиска с комбинированными оценками?

Прежде чем встать вопрос, почему мы не использовали функцию вложенных документов SOLR: мы создали этот индекс несколько лет назад, используя SOLR 4.6, и этой функции в то время не существовало. Теперь мы использовали инструменты IndexUpdater из SOLR 5 и SOLR 6, чтобы обновить наш индекс до SOLR 6.

В прошлом мы не могли создать наш полнотекстовый поиск, потому что функция SOLR BlockJoin вообще не поддерживала вычисление баллов, но в SOLR 5 это изменилось, поэтому мы хотим попробовать еще раз. Каждый намек в правильном направлении будет полезным.

0 ответов

Другие вопросы по тегам