zoukankan      html  css  js  c++  java
  • 中文分词

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

  • 相关阅读:
    spark 读取mongodb失败,报executor time out 和GC overhead limit exceeded 异常
    在zepplin 使用spark sql 查询mongodb的数据
    Unable to query from Mongodb from Zeppelin using spark
    spark 与zepplin 版本兼容
    kafka 新旧消费者的区别
    kafka 新生产者发送消息流程
    spark ui acl 不生效的问题分析
    python中if __name__ == '__main__': 的解析
    深入C++的new
    NSSplitView
  • 原文地址:https://www.cnblogs.com/xiaoxiaoqiao/p/9304179.html
Copyright © 2011-2022 走看看