2010-10-29 2 views
4

Мне интересно, существуют ли у основных SQL-систем (MS SQL, Oracle, MySQL), что 2 слова связаны друг с другом, потому что они имеют один и тот же корень.SQL word root matching

Мы знаем, что при поиске «сети» легко найти «сеть», потому что последняя является подстрокой первого.

Но у SQL-модулей есть функции, которые могут соответствовать «сети» при поиске «сети»?

Большое спасибо.

ответ

5

Эта функциональность называется stemmer: алгоритм, который может выводить стержень из любой формы слова.

Это может быть довольно сложным: например, русские слова шёл и иду разные формы одного и того же глагола, хотя они не имеют одну общую букву (по иронии судьбы, это также верно для английского языка: went и go).

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

SQL Server позволяет использовать вставные парадигматические и слово выключатели для его полнотекстового поиска двигателя:

http://msdn.microsoft.com/en-us/library/ms142509.aspx

+0

именно то, что я искал. ВЕЛИКИЙ! – Max

1

Я думаю, что тема «Семантическое сходство». Есть несколько попыток найти оптимальные решения этой проблемы.

+0

Знаете ли вы о любой реализации SQL этого? – Max

+0

нет. Я думаю, что это текущие исследования - обычно не доступны в продукте. -- К сожалению. – Randy

+0

На самом деле это называется лемматизация и считается почти решенным (хотя для его правильного использования требуется высокопрофессиональный НЛП). Stemming - легкая, эвристическая версия lemmatizing. Семантическое сходство - это еще более широкая тема, которая не решена (и может быть AI-полной). http://stackoverflow.com/questions/1787110/what-is-the-true-difference-between-lemmatization-vs-stemming –

1

Как Quassnoi отметил, это можно сделать с stemming. PostgreSQL реализует его для full-text search, если вы включите его.

ALTER TEXT SEARCH CONFIGURATION blah_en ADD MAPPING FOR english_stem;

Это использует Snowball dictionary, который основан на Porter stemmer. Источником Портера, вероятно, является один из наиболее широко используемых стволовых средств, поэтому он даст достойные результаты. Однако важно помнить, что это не всегда так точно, как вам может понравиться.