得到最匹配的网页摘要
Highlighter.dll里面提供了一个函数GetBestFragments,居然不好用,没查到是什么原因。索性自己写一个,参数分别是:1 source,字符串,网页内容;2keyArr,字符串数组,关键字数组。
protected string GetBestFragments(string source, string[] keyArr)
{
string result;
int startMin,startMax,offset;
startMin=source.IndexOf(keyArr[0]);
startMax=startMin;
for(int i=1;(i<keyArr.Length)&&(keyArr[i].Trim()!="");i++)
{
offset=source.IndexOf(keyArr[i]);
startMin=(startMin<=offset?startMin:offset);
startMax=(startMax>=offset?startMax:offset);
}
startMin = startMin - 20;
startMin = (startMin < 0 ? 0 : startMin);
if ((startMin + 251) > startMax)
{
if ((startMin + 251) > source.Length)
result = source.Substring(startMin);
else result = source.Substring(startMin, 251);
}
else
{
result = source.Substring(startMin, 121);
if ((startMax + 20) > source.Length)
result += "" + source.Substring(startMax - 121);
else result += "" + source.Substring((startMax - 121), 141);
}
return result;
}
{
string result;
int startMin,startMax,offset;
startMin=source.IndexOf(keyArr[0]);
startMax=startMin;
for(int i=1;(i<keyArr.Length)&&(keyArr[i].Trim()!="");i++)
{
offset=source.IndexOf(keyArr[i]);
startMin=(startMin<=offset?startMin:offset);
startMax=(startMax>=offset?startMax:offset);
}
startMin = startMin - 20;
startMin = (startMin < 0 ? 0 : startMin);
if ((startMin + 251) > startMax)
{
if ((startMin + 251) > source.Length)
result = source.Substring(startMin);
else result = source.Substring(startMin, 251);
}
else
{
result = source.Substring(startMin, 121);
if ((startMax + 20) > source.Length)
result += "" + source.Substring(startMax - 121);
else result += "" + source.Substring((startMax - 121), 141);
}
return result;
}