Сфинкс, фрагменты и частичные совпадения слов - PullRequest
0 голосов
/ 18 февраля 2020

Мы используем sphinx и сниппеты для базового c поиска по сайту.

SELECT id FROM search WHERE MATCH('(@keywords corona)')

И мы получаем совпадения по "коронавирусу" и "коронарному заболеванию", как и следовало ожидать.

Но когда мы позже используем

CALL SNIPPETS(
    'Wuhan Novel Coronavirus - What you need to know',
    'search',
    'corona',
    '<span class="mark">' AS before_match,
    '</span>' AS after_match,
    '…' AS chunk_separator,
    800 AS limit,
    20 AS around,
    0 AS query_mode
)

Ни одно из этих частичных совпадений не будет выделено.

Если мы ищем полное слово (заменяя "корона" в SELECT и CALL SNIPPETS, например, с помощью "coronavirus"), тогда результаты полного слова будут выделены правильно.

Есть ли способ получить CALL SNIPPETS, чтобы выделить частичные совпадения слов в первом примере, как это происходит с полное слово приводит во втором примере?

1 Ответ

0 голосов
/ 18 февраля 2020

Я только что добавил "*" к ключевому слову в CALL SNIPPETS, например:

    'Wuhan Novel Coronavirus - What you need to know',
    'search',
    '*corona*',
    800 AS limit,
    20 AS around,
    0 AS query_mode

Но комментарий от @barryhunter ниже имеет больше смысла, чем мое реальное решение.

...