分词储存在数组中不成功,不知道是什么原因啊
public static CSimpleDictSeg simpleDictSeg;private static string[] strKey=new string[10];
// 自定义分词方法
private void FC(string keyword)
{
if (simpleDictSeg == null)
{
try
{
simpleDictSeg = new CSimpleDictSeg();
// 指定分词词库位置
//simpleDictSeg.DictPath = Server.MapPath("Data/");
simpleDictSeg.DictPath = Server.MapPath("Data");
//装载字库到内存
simpleDictSeg.LoadDict();
}
catch (Exception exception)
{
simpleDictSeg = null;
Response.Write(String.Format("Load Dict Fail! ErrMsg:{0}", exception.Message));
return;
}
}
// 过滤停用词
simpleDictSeg.FilterStopWords = false;
// 识别中文人名
simpleDictSeg.MatchName = true;
var watch = new Stopwatch();
watch.Start();
// 过滤字符和标点符号
// 赋值查询关键字
string key = keyword;
// 将标点符号替换为空格
if (key != null)
{
key = key.Replace("的", " ");
key = key.Replace("么", " ");
key = key.Replace("吗", " ");
key = key.Replace("与", " ");
key = key.Replace(',', ' ');
key = key.Replace('。', ' ');
key = key.Replace('!', ' ');
key = key.Replace('-', ' ');
key = key.Replace('-', ' ');
key = key.Replace(':', ' ');
key = key.Replace(';', ' ');
key = key.Replace(':', ' ');
key = key.Replace(';', ' ');
key = key.Replace('*', ' ');
key = key.Replace('.', ' ');
key = key.Replace(',', ' ');
key = key.Replace('‘', ' ');
key = key.Replace('’', ' ');
key = key.Replace('“', ' ');
key = key.Replace('”', ' ');
key = key.Replace('?', ' ');
key = key.Replace('?', ' ');
key = key.Replace("'", " ");
key = key.Replace('"', ' ');
key = key.Replace('(', ' ');
key = key.Replace(')', ' ');
key = key.Replace(')', ' ');
key = key.Replace('(', ' ');
key = key.Replace('_', ' ');
key = key.Replace('、', ' ');
// 最后再替换掉空格
key = key.Replace(" ", "");
// 输入分词
ArrayList words = simpleDictSeg.Segment(key);
watch.Stop();
var wordsString = new StringBuilder();
foreach (String str in words)
{
wordsString.AppendFormat("{0}/", str);
}
// 去掉空格
key = wordsString.ToString();
// 去掉最后一个 / 字符
key = key.Substring(0, key.Length - 1);
//strKey = key.Split(new char[] { '/', ' ' });
//strKey=new string[key.Length];
strKey = key.Split(new char[] { '/'});
}
else { }
}
在搜索函数FindResult(string keyword)中调用了FC(string keyword)方法,但是FindResult(string keyword)中有一句代码Query qq = MultiFieldQueryParser.Parse(strKey, sField, new StandardAnalyzer());报错,说qq的值为null,我设置断点调试,显示strKey数组中都是null.是因为strKey = key.Split(new char[] { '/'});这句代码没有为strKey数组赋值成功吗?原因是什么啊?strKey是一个全局变量。 lucenet.net 分词 asp.net 搜索 --------------------编程问答-------------------- 除
补充:.NET技术 , ASP.NET