在大文本c#/ sql中查找每个相似单词的频率

时间:2017-08-13 08:43:59

标签: c# sql-server fulltext-index

我需要将单词分组,然后找到频率。

因此"moron and morons sat on moronic bench with mormons"之类的文字会产生结果

Moron 3
Sat 1
Mormon 1

我需要能够在一个查询中推送文本或精确单词列表,并接收具有频率的通用单词。

从C#开始,可以使用SQL Server。

2 个答案:

答案 0 :(得分:2)

您可以使用sys.dm_fts_index_keywords_by_document

SELECT * 
FROM sys.dm_fts_index_keywords_by_document(DB_ID('db_name')‌​,OBJECT_ID('tab_name'))

答案 1 :(得分:0)

在C#版本中,您可以将Regex与Linq一起使用;像这样:

var txt = "moron and morons sat on moronic bench with mormons";
var words = Regex.Matches(txt, @"\w+").OfType<Match>().Select(c => c.Value).ToList();
var result = words.Select(c => new {Word = c, Count = words.Count(w => w.Contains(c))})
                  .OrderByDescending(o=> o.Count).ToList();

[ C# Fiddle Demo ]