Mysql - Выберите слова из указанного текста - PullRequest
1 голос
/ 11 октября 2010

У меня в таблице содержится 413 000 названий мест (Pris, London, ...). Есть ли способ (запрос) для выбора местоположений из указанного текста.

, например:

"Транспорт для Лондона (TfL) ведет переговоры со своими американскими, австралийскими и европейскими партнерами о выдаче одной бесконтактной карты для Парижа, Нью-Йорк ".

Я хочу получить запрос:

* London
* Paris
* New York

Я пытался

SELECT name 
FROM coutries 
WHERE ("Transport for London (TfL) is in talks with its American, Australian and European partners about issuing a single contactless card for Paris, New York") LIKE CONCAT('%', name, '%');

это медленно и не дает точное слово, как (Париж, Нью-Йорк, Евро, Йорк ...)

Как я могу получить точное точноеслово?

Ответы [ 4 ]

3 голосов
/ 11 октября 2010

Вам лучше разбить предложение на слова в коде переднего / среднего конца и сделать что-то вроде

SELECT name from countries where 
name in ('Transport', 'for', 'London')

и т. Д. Таким образом, он будет (пытаться) использовать индексы (если есть)для имени.

1 голос
/ 11 октября 2010

Вам нужен полнотекстовый поиск mysql.Это должно работать:

SELECT name 
FROM coutries 
WHERE MATCH ("Transport for London (TfL) is in talks with its American, Australian and European partners about issuing a single contactless card for Paris, New York") AGAINST (name);
0 голосов
/ 11 октября 2010

Сделай наоборот:

  1. Извлечение переформатированных строк из необработанного текста
  2. Создайте простой SQL.

выберите * из стран где текст типа «% place1%» или «% place2%» ...

Создайте SQL с помощью for или while, только одним из нескольких возможных вариантов.

0 голосов
/ 11 октября 2010

Странно иметь такой запрос для выполнения. Разве вы не можете изменить структуру таблицы, чтобы она соответствовала более простым данным?

...