“消除”的最佳方法;“噪音”;ASP.NET3.5Web应用程序中的单词?
我想把一些关键字元标签放到一个页面上,具体取决于所显示的文章 假设您加载了blabla.com/article.aspx?id=2的页面 这篇id等于2的文章题为“商业管理中故意错误的智慧” 因此,我想包括如下meta标记:“消除”的最佳方法;“噪音”;ASP.NET3.5Web应用程序中的单词?,asp.net,seo,tags,metadata,noise,Asp.net,Seo,Tags,Metadata,Noise,我想把一些关键字元标签放到一个页面上,具体取决于所显示的文章 假设您加载了blabla.com/article.aspx?id=2的页面 这篇id等于2的文章题为“商业管理中故意错误的智慧” 因此,我想包括如下meta标记: <META name="keywords" content="wisdom, deliberate, mistakes, business, management" /> 如果你想过滤“噪音”或“停止”单词,我建议你研究一下regluar表达式,它们对这类东西
<META name="keywords" content="wisdom, deliberate, mistakes, business, management" />
如果你想过滤“噪音”或“停止”单词,我建议你研究一下regluar表达式,它们对这类东西的反应非常快。至于实现,我可能会将noise/stop字存储在一个表中,然后使用这些字来构建您的正则表达式。您应该能够在服务器上缓存正则表达式,这样性能影响应该最小
下面是一个基于您上面提供的单词的示例。有一个很好的在线正则表达式测试器,位于:
这些词被称为“停止词”——这将帮助你在谷歌上搜索一些实现想法 我的感觉是这样做没有多大价值——标题已经被认为对搜索索引非常重要。此外,“智慧”真的与文章相关吗 我认为最好的关键词是人工选择的,比如标签,并且最多保留1到3个描述内容的特定关键词
但要回答你的问题——你认为会有多少人?如果我要这样做,我会将它们保存在数据库中(如果我已经在使用数据库),如果它们影响性能,则将它们预加载到内存中(它可以由所有会话共享)。您可能会看到我的帖子。在那里,我使用英语、法语、西班牙语和德语中的噪音词(或停止词)。对于每一种语言,我都有三个数组:标准噪音词、最常见的动词和第三个及其变化。通过这种方式,您可以将噪声词与动词和变位符,甚至是不规则动词一起删除(在英语以外的其他语言中,变位符比-ed、-ing和-s终止符复杂得多) 提供的示例VB项目代码为每个asp.net页面(.aspx)动态创建元标题、元关键字和元描述,无需用户干预,其cpu命中率仅在编译时(第一次请求)。一旦页面被编译,它们的标记(标题、关键字、描述)就不会占用任何cpu空间。这是因为,由于VirtualPathProviders(文件系统在任何时候都不会被修改),在实际编译文件之前,Meta是动态计算的并被推送到文件中的 我将它们存储在编码数组中,这些数组经过排序,以便能够使用二进制搜索算法
我希望这能对你有所帮助。问候。@Rob的回答为我指明了一个正确的方向,可以完成类似的任务。这是我最后得到的工作函数。文件
noiseENU.txt
按原样从\Program Files\Microsoft SQL Server\MSSQL.1\MSSQL\FTData
复制
Public Function StripNoiseWords(ByVal s As String) As String
Dim NoiseWords As String = ReadFile("/Standard/Core/Config/noiseENU.txt").Trim
Dim NoiseWordsRegex As String = Regex.Replace(NoiseWords, "\s+", "|") ' about|after|all|also etc.
NoiseWordsRegex = String.Format("\s?\b(?:{0})\b\s?", NoiseWordsRegex)
Dim Result As String = Regex.Replace(s, NoiseWordsRegex, " ", RegexOptions.IgnoreCase) ' replace each noise word with a space
Result = Regex.Replace(Result, "\s+", " ") ' eliminate any multiple spaces
Return Result
End Function
这是解决办法
[1] :有关更多详细信息 +1与我想说的差不多,但我觉得这些天来meta标签的价值充其量是值得怀疑的。是的,我考虑过标签。。。但是客户不喜欢人工输入标签,他们希望自动添加“标签”。第一步就是标题,然后他们想要一些非常奇怪的东西,比如阅读文章的主体,然后决定哪些是关键词。听起来很疯狂,而且非常难=P,但是人类标记不是一个选项=(所以你们都同意将“停止词”存储在数据库中而不是其他任何地方的想法?在回答你们关于有多少“停止词”的问题时。我只是想使用与SQL Server相同的方法(我将编辑这篇文章,以包含SQLServer2005FTS文件noiseENU.txt的内容)谢谢!我将看看你的帖子。
\b(?: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)\b
Public Function StripNoiseWords(ByVal s As String) As String
Dim NoiseWords As String = ReadFile("/Standard/Core/Config/noiseENU.txt").Trim
Dim NoiseWordsRegex As String = Regex.Replace(NoiseWords, "\s+", "|") ' about|after|all|also etc.
NoiseWordsRegex = String.Format("\s?\b(?:{0})\b\s?", NoiseWordsRegex)
Dim Result As String = Regex.Replace(s, NoiseWordsRegex, " ", RegexOptions.IgnoreCase) ' replace each noise word with a space
Result = Regex.Replace(Result, "\s+", " ") ' eliminate any multiple spaces
Return Result
End Function