• 中文分词


    昨天产品提了个需求,用户搜索‘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

  • 相关阅读:
    ZCMU 暑期练习赛【识别】
    P1024 一元三次方程求解
    P1059 明明的随机数
    P2670 扫雷游戏
    ESP32手动搭建Arduino环境
    基于arduino的气象站
    序列归并
    结构体数组排序:1004 成绩排名 【pta】
    C语言:大数求和
    centos7 安装mongodb replica set 集群搭建
  • 原文地址:https://www.cnblogs.com/xiaoxiaoqiao/p/9304179.html
Copyright © 2020-2023  润新知