中文分词

昨天产品提了个需求,用户搜索‘Q币充值’,只要包含‘Q币’的产品都要搜索出来,我们知道,通常情况搜索是把整个字符串进行模糊查询,这种需求应该怎么解决,我们来看看

 //首先引用两个DLL文件,再引用这三个命名空间,DLL文件底下会给链接

using Lucene.Net;

using Lucene.Net.Analysis;

using Lucene.China;

public ActionResult Index()

 {

    StringBuilder sb = new StringBuilder();

    sb.Remove(0, sb.Length);

    string t1 = "";

    int i = 0;

    Analyzer analyzer = new Lucene.China.ChineseAnalyzer();

    string rich = "Q币人外热发给34645……&*";

    StringReader sr = new StringReader(rich);

    TokenStream stream = analyzer.TokenStream(null, sr);

    

     long begin = System.DateTime.Now.Ticks;

     Token t = stream.Next();

     while (t != null)

      {

            t1 = t.ToString();   //显示格式: (关键词,0,2) ,需要处理

            t1 = t1.Replace("(", "");

            char[] separator = { ',' };

            t1 = t1.Split(separator)[0];

            sb.Append(i + ":" + t1 + "\r\n");

            t = stream.Next();

             i++;

        }

        ViewBag.rich = rich;

        ViewBag.richSp = sb.ToString();

        long end = System.DateTime.Now.Ticks; //100毫微秒

        int time = (int)((end - begin) / 10000); //ms

        ViewBag.richTime = "耗时" + (time) + "ms \r\n=================================\r\n";

        return View();

   }

代码分析:

1、因无源码,词库文件只能放在指定的路径下
2、因无源码,大小写字母此处不区分,无法修正
3、不支持标点符号拆分

4、网上很大一部分的分词代码都是摘自飘易的博客,不如直接看他的。

      如果想要有源码的,网上也有一些大佬自己写的分词,几乎用不上这个功能也就没去验证

PS: dll文件下载地址 http://www.piaoyi.org/upimg/file071127_08/02/ChineseAnalyzer.rar

里面包含winform版的demon,摘自 http://www.piaoyi.org/c-sharp/ChineseAnalyzer.html

原文地址:https://www.cnblogs.com/xiaoxiaoqiao/p/9304179.html