Приоритет полей, последовательность выбора.

Моё почтение, коллеги!

Один малюсенький, крохотный вопросик.

Значит, допустим, что у нас есть два поля, по которым осуществляется поиск. Первое - название, второе - тоже название :laughing::laughing: но название категории.

Внимание - вопрос.
Как правильно выставить приоритет полей, чтобы результаты второго поля(название категории) выдавала результат только ежели нету результата по первому полю.
Допустим, что у нас в запросе лимит на 100., но результатов от первого поля лишь 70, вот как набрать недостающие 30, при условие - ежели такие имеются по второму полю?
Запрос типа sql SELECT… WHERE… LIMIT;

Время пошло. (шутка) :laughing::laughing::laughing:

П.С.
Я к шуткам добавляю надпись намеренно, потому как очень часто встречаются люди напрочь лишённые чувства юмора. :wink::roll_eyes::rofl:

Боюсь, что только в приложении это можно обработать: сперва поискать по одному полю, не найти там ничего или недостаточно, тогда поискать в другом поле.

Там опять время на запросы, обработку… Нам ведь результат нужен в милисикундах, чтобы обойти конкурентов. :wink::rofl: Может со временем ведёте такую фишку… типа ‘field rank’
Почему-то кажется, что тема весьма интересная.

Пока же, чтобы не терять во времени на тучу действий можно - как у гугла - что то вроде показать пропущенные результаты… и хрясь доп.результаты в кучу. :rofl::rofl: Хотя это не совсем то что нужно.

вы можете написать кастомный ранкер Manticore Search Manual: Extensions > UDFs and Plugins > Plugins > Ranker plugins

в котором вес матчей из нужного вам поля умножать на 1000 - так получится что матчи из поля Х будут иметь больший вес чем у остальных полей

или использовать опцию запроса Manticore Search Manual: Searching > Options field_weights чтобы задать веса полей

@tomat Но как оно будет работать при сортировки ORDER BY id desc или … price desc ? То есть списки будут иметь другую почередность… По моему всё выше упомянутое может работать ежели нет сортировки или как?

оригинальный вопрос был

Как правильно выставить приоритет полей, чтобы результаты второго поля(название категории) выдавала результат только ежели нету результата по первому полю.

на этот вопрос ответ

SELECT weight() as sort FROM idx ... ORDER BY sort DESC OPTION field_weights=(title=10, body=3)

если вам нужна дополнительная сортировка вы можете изобрести какую-то формулу например с другими ранкерами Manticore Search Manual: Searching > Sorting and ranking (наример fieldmask ранкер) и UDF функцией написаной для вас, под ваши требования

SELECT weight() as sort, my_udf_func ( weight, id, price ) as sort1 FROM idx ... ORDER BY sort1 DESC OPTION ranker=fieldmask;

Всё верно. Вопрос не очень точный.

Весьма интересно, буду что то пробывать.
Спасибо.

А скажите, есть ли способ с SQL запроса напрямую вернуть результат с высвечиванием? Типа keyword

не совсем понятно что такое высвечивание

но у нас в документации описана подсветка\выделение найденного текста Manticore Search Manual: Searching > Highlighting и так же вы можете попробовать интерактивный курс Highlighting in Manticore на эту же тему или попробовать там свои идеи без необходимости конфигурировать что-то

Синоним.