当前位置:编程学习 > C#/ASP.NET >>

分词储存在数组中不成功,不知道是什么原因啊

 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
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,