我有同样的问题,经过彻底的搜索,我得出的结论是没有好的解决方案。
作为妥协,我正在实施蛮力解决方案:
1) 打开 C:\Program Files\Microsoft SQL Server\MSSQL.1\MSSQL\FTData\noiseENU.txt 并复制其中的所有文本。
2)粘贴到应用程序的代码文件中,用“,”替换换行符以获得这样的列表初始化程序:
public static List<string> _noiseWords = new List<string>{ "about", "1", "after", "2", "all", "also", "3", "an", "4", "and", "5", "another", "6", "any", "7", "are", "8", "as", "9", "at", "0", "be", "$", "because", "been", "before", "being", "between", "both", "but", "by", "came", "can", "come", "could", "did", "do", "does", "each", "else", "for", "from", "get", "got", "has", "had", "he", "have", "her", "here", "him", "himself", "his", "how", "if", "in", "into", "is", "it", "its", "just", "like", "make", "many", "me", "might", "more", "most", "much", "must", "my", "never", "no", "now", "of", "on", "only", "or", "other", "our", "out", "over", "re", "said", "same", "see", "should", "since", "so", "some", "still", "such", "take", "than", "that", "the", "their", "them", "then", "there", "these", "they", "this", "those", "through", "to", "too", "under", "up", "use", "very", "want", "was", "way", "we", "well", "were", "what", "when", "where", "which", "while", "who", "will", "with", "would", "you", "your", "a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "k", "l", "m", "n", "o", "p", "q", "r", "s", "t", "u", "v", "w", "x", "y", "z" };
3)在提交搜索字符串之前,将其分解为单词并删除噪声单词中的任何单词,如下所示:
List<string> goodWords = new List<string>();
string[] words = searchString.Split(' ');
foreach (string word in words)
{
if (!_noiseWords.Contains(word))
goodWords.Add(word);
}
不是一个理想的解决方案,但只要干扰词文件不改变就应该可以工作。多语言支持将使用按语言列出的字典。