Я пытаюсь достичь двух целей с помощью одного запроса Sphinx: получить результаты, соответствующие любому слову запроса, и иметь точное соответствие на первом месте. Например, если у меня была песня базы данных запроса на поиск:Sphinx точное/частичное совпадение и рейтинг
- Miley Cyrus Бал
- Miley Cyrus Разрушения
- Майли Сайрус
И два тестовых запросов:
- Miley Cyrus
- Miley Cyrus Wrecking Ball
Если я ищу «Miley Cyrus», я хочу получить строку №3, и если я ищу «Miley Cyrus Wrecking Ball», я хочу получить № 1 или № 2. Я пробовал различную комбинацию режимов сопоставления и ранжирования, но до сих пор не могу заставить это работать с единственным запросом. Когда я пытаюсь выполнить SPH_MATCH_EXTENDED2
и SPH_RANK_SPH04
, мой первый тестовый запрос работает нормально, возвращая результат №3 на первом месте, но второй тестовый запрос не возвращает никаких результатов. Когда я пытаюсь выполнить SPH_MATCH_ANY
, я получаю частично согласованные результаты для второго тестового запроса (# 2 имеет немного более высокий вес, который кажется правильным), но первый запрос возвращает 3 строки с одинаковым весом, а # 1 сверху сверху из-за порядка в БД , Единственным обходным решением, которое у меня есть сейчас, является создание двух запросов: одно для точного соответствия и другое для частичного совпадения, если первый из них не удался.
Также из этого article Я вижу, что все режимы соответствия, кроме SPH_MATCH_EXTENDED2
, являются устаревшими, поэтому что я должен использовать для частичного совпадения, как в примере выше, когда они удаляются?
Спасибо за большой и подробный ответ, я должен был читать документы лучше, не знал много о расширенном синтаксисе запроса, оператор кворума сделал трюк. – yefrem