У меня есть куча ключевых слов, хранящихся в MySQL. Для простоты предположим, что в базе данных мало ключевых слов.
Допустим, они хранят таблицу примерно так:
CREATE TABLE `keywords` (
`keyword` varchar(255) NOT NULL,
UNIQUE KEY `keyword` (`keyword`),
FULLTEXT KEY `keyword_ftx` (`keyword`)
)
и на данный момент есть несколько ключевых слов:
«C», «C ++», «C #», «Zend Framework», «Visual Basic»
Теперь я хочу извлечь эти ключевые слова из текста. Такие как:
Вот некоторые языки программирования и платформы, такие как C ++,
Visual Basic и Zend Optimizer делают кое-что.
Очевидные ключевые слова, которые должны быть найдены из вышеприведенного текста с использованием примеров записей базы данных ключевых слов, должны быть:
C ++, Visual Basic
Я попробовал 2 подхода до сих пор.
1- Поместите текст в слова и используйте SQL-запрос для поиска подходящих строк.
Пример: ГДЕ ключевое слово IN (‘word1’, ‘word2’ …)
Это прекрасно работает для отдельных слов. Однако он не может найти вещи
как «Visual Basic» и т. д., которые являются 2 словами.
2- Используйте полнотекстовые индексы и передайте текст как естественный язык для MySQL.
Пример: МАТЧ Ключевое слово ПРОТИВ («весь текст»)
Это также работает довольно хорошо, но возвращает такие вещи, как ‘Zend
Framework ‘(так как полнотекстовый индекс принимает Zend и Framework отдельно
слова, пока он не находит C ++ (на счет разделителей слов
в MySQL). Я не хочу делать для этого собственную сортировку
только.
В большинстве статей, посвященных stackoverflow, я предлагаю метод 1 или 2, но ни одна из них не работает для меня. Любые идеи о том, что будет лучшим методом для извлечения ключевых слов из нескольких слов, а также сопоставления других текстов в базе данных, таких как C ++ и т. Д., Который имеет символы пунктуации в простой форме?
Спасибо!
Задача ещё не решена.
Других решений пока нет …