Задать вопрос

Как найти список точных совпадений фраз из БД в заданном тексте с помощью PHP?

Есть БД с 100к ключевых фраз, таких как:
большой дом
кафельная плитка
зеленая машина в саду

К нам приходит на обработку текст, вида:
В ноябре в Лондоне большой человек купил большой дом для своей большой семьи. В доме была кафельная панель.

Нужно найти в этом тексте все полные совпадения из БД, то есть в нашем случае:
большой дом
Пробовал FULLTEXT INDEX, запрос вида:
SELECT * FROM `phrases` WHERE MATCH(`phrase`) AGAINST('В ноябре в Лондоне большой человек купил большой дом для своей большой семьи. В доме была кафельная панель.')

Возвращает:
большой дом
кафельная плитка

Пробовал с использованием IN BOOLEAN MODE и сравнением кол-ва слов в фразе в БД с кол-вом найденых совпадений, но тогда соответственно вообще не получаю результатов.

Можно ли это как-то сделать на индексированном поисковом движке (будь то средства MySQL или Sphinx) и есть да, то как?

UPD. Судя по ответам, вопрос задан непонятно: у меня база коротких фраз (100000 фраз по 1-2 слова) и на вход я получаю текст (1000 слов). Я ищу текстом по фразам , а не наоборот. Текст не находится в БД и не проиндексирован. Его я получаю извне и не могу контроллировать. Мне нужно, получив текст, выдать для него подходящие фразы из БД.
  • Вопрос задан
  • 1797 просмотров
Подписаться 4 Оценить Комментировать
Ответ пользователя Immortal_pony К ответам на вопрос (5)
Immortal_pony
@Immortal_pony Куратор тега PHP
Нужно найти в этом тексте все полные совпадения из БД.

Тогда используйте простой поиск, а не умный:

SELECT * 
FROM `phrases`
WHERE 
    'В ноябре в Лондоне большой человек купил большой дом для своей большой семьи. В доме была кафельная панель.' 
    LIKE CONCAT('%', phrases.`phrase` , '%')
Ответ написан