我正在使用Lucene来搜索和索引页面,不幸的是,它爬行页面并吸收了许多常见的文本,例如语言选择器“美国,巴西等”。显示并稀释我的搜索结果。
我想计算常见的单词和短语,如果很多文档包含“如何帮助”,我想从索引中删除它。这似乎是一个已经解决的NLP,有没有一种方法可以分析本质上是一个字符串数组,并删除不断出现的短语?
发布于 2013-12-07 00:18:01
创建您想要过滤掉的常用词的“HashSet”。然后,将数组复制到新数组中,一次复制一项,在复制之前检查散列集中的成员关系。哈希集是.NET框架中最快的可搜索结构。它只检查成员资格。
private HashSet<string> commonWords = new HashSet<string>() {
"How to help", "Click Here", "Home", "Facebook", "Like Me", "Buy Viagra"
};
List<string> newList = new List<string>();
foreach(string s in luceneArray)
if(!commonWords.Contains(s))
newList.Add(s);
至少这是一个起点。如果你的原始列表很大,可以使用字典或二叉树。
发布于 2013-12-06 23:44:03
不确定我是否真的理解正确,可能比我想象的更复杂。但如果它是包含您的项的字符串列表,则可以使用
MyList.Distinct();
要做到这一点。
https://stackoverflow.com/questions/20435312
复制相似问题