Подход корня слова SQL - PullRequest
       56

Подход корня слова SQL

4 голосов
/ 29 октября 2010

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

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

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

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

Ответы [ 4 ]

5 голосов
/ 29 октября 2010

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

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

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

SQL Server позволяет использовать сменные модули расширения и средства разбиения слов для своей полнотекстовой поисковой системы:

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

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

Как указывал Кассной, это можно сделать с помощью stemming . PostgreSQL реализует его для полнотекстового поиска , если вы включите его.

ALTER TEXT SEARCH CONFIGURATION blah_en ADD MAPPING FOR english_stem;

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

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

Вы можете попробовать использовать soundex, хотя это может быть не совсем то, что вы хотите.Смотри http://www.codeproject.com/KB/database/Phonetic_Search_MSSQL.aspx.

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

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

...