SQL字根匹配

时间:2010-10-29 11:55:04

标签: sql nlp stemming lemmatization

我想知道那里的主要SQL引擎(MS SQL,Oracle,MySQL)是否能够理解2个单词是相关的,因为它们共享相同的根。

我们知道在搜索“网络”时很容易匹配“网络”,因为后者是前者的子串。

但是,在搜索“网络”时,SQL引擎是否具有可以匹配“网络”的功能?

非常感谢。

4 个答案:

答案 0 :(得分:5)

此功能称为stemmer:一种算法,可以从任何形式的词中推断出词干。

这可能相当复杂:例如,俄语单词шёлиду是同一动词的不同形式,尽管它们没有一个共同的字母(具有讽刺意味的是,英语也是如此) :wentgo)。

对于某些在单词之间不使用空格的语言来说,断字也是一项非常复杂的任务。

SQL Server允许使用可插入的词干分析器和断字符作为其全文搜索引擎:

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

答案 1 :(得分:1)

我认为主题是'语义相似'。有几种努力试图找到解决这个问题的最佳方案。

答案 2 :(得分:1)

您可以尝试使用soundex,尽管它可能不是您想要的。请参阅http://www.codeproject.com/KB/database/Phonetic_Search_MSSQL.aspx

答案 3 :(得分:1)

正如Quassnoi指出的那样,这可以通过stemming来完成。如果你打开它,PostgreSQL会为full-text search实现它。

ALTER TEXT SEARCH CONFIGURATION blah_en ADD MAPPING FOR english_stem;

这使用Snowball dictionary,它基于Porter stemmer。 Porter干扰器可能是最广泛使用的干扰器之一,因此它将提供不错的结果。但重要的是要记住,干预并不总是像你想的那样准确。