Сфинкс (Поиск) - документы, которые соответствуют ключевому слову дважды (трижды и т. Д.) - PullRequest
0 голосов
/ 02 октября 2018

Можно ли выводить только те документы, которые содержат n совпадений с поисковым термином в нем?

Например, я хочу вывести все документы, содержащие поисковый запрос "Pablo Picasso" | "Picasso Pablo" как минимум два (три, три,п) раз.Как бы выглядел такой запрос?

Мой текущий запрос: SELECT * FROM myIndex WHERE MATCH('"Pablo Picasso" | "Picasso Pablo"');

1 Ответ

0 голосов
/ 03 октября 2018

Вы можете сделать это с фильтрацией по весу (т. Е. Результаты с многократным увеличением ранга)

Но полезным трюком является оператор строгого порядка ...

MATCH('Pablo << Pablo')

требуется слово дважды (т.е. одно перед другим!)


Вы также можете использовать оператор primoxity, чтобы упростить исходный запрос, он просто хочет, чтобы слова были рядом друг с другом, что более кратко, чем две фразыоператоры

MATCH('"Pablo Picasso"~1')

... т.е. в пределах 1 слова друг от друга - т.е.


Объедините два ..

MATCH('"Pablo Picasso"~1 << "Pablo Picasso"~1')

и для трех случаев

MATCH('"Pablo Picasso"~1 << "Pablo Picasso"~1 << "Pablo Picasso"~1')
...