精华内容
下载资源
问答
  • solr cloud系列-拼音分词器

    千次阅读 2017-02-16 16:17:17
    章来说下solr cloud怎么使用拼音分词,以及同个字段怎么样同时支持中文分词和拼音分词。 首先是solr6.1.0搭建拼音分词,这里我使用的是lucene的smartCN加pinyin4j组合的拼音分词。 注意:所有节点都...

    这一章来说下solr cloud怎么使用拼音分词,以及同一个字段怎么样同时支持中文分词和拼音分词。


    首先是solr6.1.0搭建拼音分词,这里我使用的是lucene的smartCN加pinyin4j组合的拼音分词。


    注意:所有节点都需要操作。


    我们先把solr cloud自带的smartCN的jar包放到WEB-INF/lib下。


    我的smartCN的位置在solr cloud的安装目录下,目录是:solr-6.1.0/contrib/analysis-extras/lucene-libs/lucene-analyzers-smartcn-6.1.0.jar


    我的WEB-INF的目录是:solr-6.1.0/server/solr-webapp/webapp/WEB-INF/lib/


    下面我们需要把拼音分词的第三方jar也放到/WEB-INF/lib/下,这两个jar分别是pinyin4j-2.5.0.jar和pinyinAnalyzer4.3.1.jar,pinyin4j这个jar大家可以直接到maven下,

    pinyinAnalyzer4.3.1.jar这个jar大家可以直接到网上搜,或者从下面的链接下载,我上传的。

    下载地址:http://download.csdn.net/detail/yangcl123/9756031


    把jar放到lib目录之后,下面我们就需要修改managed-schema文件,增加拼音分词的类型和字段,如果我们的字段需要同时支持中文分词和拼音分词,我们就要使用copy字段。

    下面的manage中类型和字段的设置:

    增加fieldtype:

            <fieldType name="my_pinyin" class="solr.TextField" positionIncrementGap="0">
                 <analyzer type="index">
                     <tokenizer class="org.apache.lucene.analysis.cn.smart.HMMChineseTokenizerFactory"/>
                     <filter    class="com.shentong.search.analyzers.PinyinTransformTokenFilterFactory"    minTermLenght="2"/>
                     <filter    class="com.shentong.search.analyzers.PinyinNGramTokenFilterFactory"    minGram="1" maxGram="20" />
                 </analyzer>
                 <analyzer type="query">
                     <tokenizer class="org.apache.lucene.analysis.cn.smart.HMMChineseTokenizerFactory"/>
                     <filter    class="com.shentong.search.analyzers.PinyinTransformTokenFilterFactory" minTermLenght="2" />
                     <filter    class="com.shentong.search.analyzers.PinyinNGramTokenFilterFactory" minGram="1" maxGram="20" />
                  </analyzer>
            </fieldType>


    增加查询字段,支持中文分词(见上一章)和拼音分词:my_ik是上一章设置的IK分词

     <field name="openBankName" type="my_ik" indexed="true" stored="true" multiValued="false" />

     <field name="openBankNameQuery" type ="my_pinyin" indexed ="true"    stored ="false" multiValued ="true"/>
     <copyField source="openBankName" dest="openBankNameQuery"/>


    下面我们把修改的managed-schema文件上传到zookeeper:

    替换单个配置文件,我是在solr安装目录执行的
    ./server/scripts/cloud-scripts/zkcli.sh -zkhost node2:2181,node1:2181,node3:2181 -cmd putfile     server/solr/configsets/xxxxxx/conf/managed-schema 

    上传完毕之后我们重启solr cloud的所有节点:./bin/solr -c restart


    我们进入solr的web页面,找到对应的collection,把配置文件reload一下,如下图:





    如果你的需要分词的字段在设置IK的时候已经重新生成一边,这里就不同重建索引啦,如果没有请重新生成一下。


    注意:我们需要查询copy的字段才能同时支持中文分词和拼音分词,下面我们在web页面验证下。










    展开全文
  • thinkphp5整合系列之汉字转拼音完美支持多音字1.进入thinkphp5项目的根目录,用composer 安装扩展2.接下来需要做的事就是在控制器中引入 /vendor/overtrue/pinyin/src/Pinyin.php 文件里面的Pinyn这个类 项目需求,...


    项目需求,需要将汉字转换为拼音,然后按拼音排序.网上找了许多的解决方案,但并不能很好地支持多音字,例如重庆转换之后变成的zhong qing,导致排序异常.
    后来费了一番功夫终于在github(https://github.com/overtrue/pinyin)上面找到了完美的解决方案,下面记录一下这次的解决过程!

    1.进入thinkphp5项目的根目录,用composer 安装扩展

    $ composer require "overtrue/pinyin:~4.0"
    

    安装完毕之后,可以看到verdor目录下面多了一个overtrue目录,目录里面的文件就是我们所需的扩展.

    2.接下来需要做的事就是在控制器中引入 /vendor/overtrue/pinyin/src/Pinyin.php 文件里面的Pinyn这个类

    public function pinyin()
        {
            vendor('overtrue.pinyin.src.Pinyin');
            $pinyin = new \Overtrue\Pinyin\Pinyin();
    
            echo '<br/>';
            echo '<span style="font-weight: bold;">一、拼音数组</span>';
            echo '<br/>';
            echo '1.带着希望去旅行,比到达终点更美好';
            $str = $pinyin->convert('带着希望去旅行,比到达终点更美好');// ["dai", "zhe", "xi", "wang", "qu", "lyu", "xing", "bi", "dao", "da", "zhong", "dian", "geng", "mei", "hao"]
            dump($str);
            echo '2.带着希望去旅行,比到达终点更美好';
            echo '带声调转化:带着希望去旅行,比到达终点更美好';
            $str = $pinyin->convert('带着希望去旅行,比到达终点更美好', PINYIN_TONE);// ["dài","zhe","xī","wàng","qù","lǚ","xíng","bǐ","dào","dá","zhōng","diǎn","gèng","měi","hǎo"]
            dump($str);
            echo '3.带着希望去旅行,比到达终点更美好';
            $str = $pinyin->convert('带着希望去旅行,比到达终点更美好', PINYIN_ASCII_TONE);//["dai4","zhe","xi1","wang4","qu4","lyu3","xing2","bi3","dao4","da2","zhong1","dian3","geng4","mei3","hao3"]
            dump($str);
    
            echo '<br/>';
            echo '<span style="font-weight: bold;">二、生成用于链接的拼音字符串</span>';
            echo '<br/>';
            echo '1.带着希望去旅行';
            $str = $pinyin->permalink('带着希望去旅行'); // dai-zhe-xi-wang-qu-lyu-xing
            dump($str);
            echo '2.带着希望去旅行';
            $str = $pinyin->permalink('带着希望去旅行', '.'); // dai.zhe.xi.wang.qu.lyu.xing
            dump($str);
    
            echo '<br/>';
            echo '<span style="font-weight: bold;">三、获取首字符字符串</span>';
            echo '<br/>';
            echo '1.带着希望去旅行';
            $str = $pinyin->abbr('带着希望去旅行'); // dzxwqlx
            dump($str);
            echo '2.带着希望去旅行';
            $str = $pinyin->abbr('带着希望去旅行', '-'); // d-z-x-w-q-l-x
            dump($str);
            echo '3.你好2018!';
            $str = $pinyin->abbr('你好2018!', PINYIN_KEEP_NUMBER); // nh2018
            dump($str);
            echo '4.Happy New Year! 2018!';
            $str = $pinyin->abbr('Happy New Year! 2018!', PINYIN_KEEP_ENGLISH); // HNY2018
            dump($str);
    
            echo '<br/>';
            echo '<span style="font-weight: bold;">四、翻译整段文字为拼音,将会保留中文字符:,。 ! ? : “ ” ‘ ’ 并替换为对应的英文符号。</span>';
            echo '<br/>';
            echo '1.带着希望去旅行,比到达终点更美好!';
            $str = $pinyin->sentence('带着希望去旅行,比到达终点更美好!');// dai zhe xi wang qu lyu xing, bi dao da zhong dian geng mei hao!
            dump($str);
            echo '2.带着希望去旅行,比到达终点更美好!';
            $str = $pinyin->sentence('带着希望去旅行,比到达终点更美好!', PINYIN_TONE);// dài zhe xī wàng qù lǚ xíng, bǐ dào dá zhōng diǎn gèng měi hǎo!
            dump($str);
    
            echo '<br/>';
            echo '<span style="font-weight: bold;">五、翻译姓名:姓名的姓的读音有些与普通字不一样,比如 ‘单’ 常见的音为 dan,而作为姓的时候读 shan。</span>';
            echo '<br/>';
            echo '1.单某某';
            $str = $pinyin->name('单某某'); // ['shan', 'mou', 'mou']
            dump($str);
            echo '2.单某某';
            $str = $pinyin->name('单某某', PINYIN_TONE); // ["shàn","mǒu","mǒu"]
            dump($str);
        }
    

    获取项目实例源码,欢迎访问获 https://github.com/hillwooda/study

    展开全文
  • 打开淘宝看看吧,输入拼音”zhonghua”,下面会有包含”zhonghua”对应的中文”中华”的商品的提示: elasticsearch-analysis-pinyin 是 ElasticSearch的拼音插件,强大的功能支持拼音等的搜索。 拼音分词是...

    拼音分词在日常生活中其实很常见,也许你每天都在用。打开淘宝看一看吧,输入拼音”zhonghua”,下面会有包含”zhonghua”对应的中文”中华”的商品的提示:

    elasticsearch-analysis-pinyin 是 ElasticSearch的拼音插件,强大的功能支持拼音等的搜索。

    拼音分词是根据输入的拼音提示对应的中文,通过拼音分词提升搜索体验、加快搜索速度。下面介绍如何在Elasticsearch 6.2.2中配置elasticsearch-analysis-pinyin

    1、下载源代码

    源码地址https://github.com/medcl/elasticsearch-analysis-pinyin

    这里我是直接使用Download ZIP方式下载了源码,里面的readme 说的使用方法很详细全面,完全可以参考里面的文档进行练习。

    2、解压到指定目录

       下载的源码zip文件解压缩

    3、修改源码的pom.xml文件

        <elasticsearch.version>6.2.2</elasticsearch.version>  修改es版本为您需要的版本号

    这有个小插曲:我用的elasticsearch为6.2.2,看了源码下的readme版本对照信息后,发现没有对应的6.2.2的版本信息。因此我分别编译了6.2.4和6.2.2版本的elasticsearch-analysis-pinyin插件。实测都是可以在6.2.2的elasticsearch中使用。但是如果编译的是6.2.4版本的pinyin插件时,需要把plugin-descriptor.properties配置文件中elasticsearch.version修改为6.2.2,否则es无法正常启动!!!

    如下图:

    另附readme.md文件中的版本对照图如下:

    4、mvn打包,执行mvn install

        会在源码目录下生成target文件夹,在如下目录中找到elasticsearch-analysis-pinyin-6.2.2.zip

        elasticsearch-analysis-pinyin-master\target\releases\elasticsearch-analysis-pinyin-6.2.2.zip

    5、将elasticsearch-analysis-pinyin-6.2.2.zip解压缩后的内容复制到elasticsearch的plugins目录的pinyin目录下

         如果没有pinyin目录自己创建,如下图:

          

    6、重启es,  

        ./bin/elasticsearch.bat

    7、验证

    在kibana中输入

    GET _analyze
    {
      "analyzer": "pinyin",
      "text": "刘德华"
    }

    显示如下json数据则为安装成功

    {
      "tokens": [
        {
          "token": "liu",
          "start_offset": 0,
          "end_offset": 0,
          "type": "word",
          "position": 0
        },
        {
          "token": "de",
          "start_offset": 0,
          "end_offset": 0,
          "type": "word",
          "position": 1
        },
        {
          "token": "hua",
          "start_offset": 0,
          "end_offset": 0,
          "type": "word",
          "position": 2
        },
        {
          "token": "ldh",
          "start_offset": 0,
          "end_offset": 0,
          "type": "word",
          "position": 2
        }
      ]
    }

     

    展开全文
  • 首先会用到个pinyin4j的工具包,首先添加maven依赖如下: &lt;!--拼音工具包--&gt; &lt;dependency&gt; &lt;groupId&gt;com.belerweb&lt;/groupId&gt; &lt;artifactId&...

     要实现搜索推荐,中文转拼音功能是必不可少的!废话不多说,下边直接上代码

    首先会用到一个pinyin4j的工具包,首先添加maven依赖如下:

    <!--拼音工具包-->
    <dependency>
        <groupId>com.belerweb</groupId>
        <artifactId>pinyin4j</artifactId>
        <version>2.5.0</version>
    </dependency>

    下边是博主用的工具类:

    package com.boao.platform.common.util;
    
    import net.sourceforge.pinyin4j.PinyinHelper;
    import net.sourceforge.pinyin4j.format.HanyuPinyinCaseType;
    import net.sourceforge.pinyin4j.format.HanyuPinyinOutputFormat;
    import net.sourceforge.pinyin4j.format.HanyuPinyinToneType;
    import net.sourceforge.pinyin4j.format.exception.BadHanyuPinyinOutputFormatCombination;
    
    /**
     * Created by liyy on 2018/7/25.
     * 汉字转换为拼音
     * @author Red
     */
    public class ChineseToPinYinUtil {
        /**
         * 测试main方法
         * @param args
         */
        public static void main(String[] args) {
            System.out.println(ToFirstChar("汉字转换为拼音").toLowerCase()); //转为首字母小写
            System.out.println(ToPinyin("汉字转换为拼音"));                  //转为全拼
        }
        /**
         * 获取字符串拼音的第一个字母
         * @param chinese
         * @return
         */
        public static String ToFirstChar(String chinese){
            String pinyinStr = "";
            char[] newChar = chinese.toCharArray();  //转为单个字符
            HanyuPinyinOutputFormat defaultFormat = new HanyuPinyinOutputFormat();
            defaultFormat.setCaseType(HanyuPinyinCaseType.LOWERCASE);
            defaultFormat.setToneType(HanyuPinyinToneType.WITHOUT_TONE);
            for (int i = 0; i < newChar.length; i++) {
                if (newChar[i] > 128) {
                    try {
                        pinyinStr += PinyinHelper.toHanyuPinyinStringArray(newChar[i], defaultFormat)[0].charAt(0);
                    } catch (BadHanyuPinyinOutputFormatCombination e) {
                        e.printStackTrace();
                    }
                }else{
                    pinyinStr += newChar[i];
                }
            }
            return pinyinStr;
        }
    
        /**
         * 汉字转为拼音
         * @param chinese
         * @return
         */
        public static String ToPinyin(String chinese){
            String pinyinStr = "";
            char[] newChar = chinese.toCharArray();
            HanyuPinyinOutputFormat defaultFormat = new HanyuPinyinOutputFormat();
            defaultFormat.setCaseType(HanyuPinyinCaseType.LOWERCASE);
            defaultFormat.setToneType(HanyuPinyinToneType.WITHOUT_TONE);
            for (int i = 0; i < newChar.length; i++) {
                if (newChar[i] > 128) {
                    try {
                        pinyinStr += PinyinHelper.toHanyuPinyinStringArray(newChar[i], defaultFormat)[0];
                    } catch (BadHanyuPinyinOutputFormatCombination e) {
                        e.printStackTrace();
                    }
                }else{
                    pinyinStr += newChar[i];
                }
            }
            return pinyinStr;
        }
    }

     

    展开全文
  • 点击上方“方才编程”,即可关注我!本文导读本文仿照QQ的用户搜索,搭建个中文+拼音的混合检索系统,并高亮显示检索字段。全文共分为以下几部分:1、项目简介,包括需求描述与分析等;2、项...
  • 汉字转拼音的实现

    千次阅读 2017-05-13 19:41:16
    游戏中显示榜单等重复性信息时, 会有一系列的排序规则。 一般在按照名字排序时,有一条是以汉字拼音字母排序。本文实现了如何获取汉字的拼音以及拼音首字母的方法。主要思路: GB2312编码采用16位编码方式,简体...
  • 我的linux是Ubuntu 20,试了下午,各种安装搜狗不行,看来是搜狗没有作升级 但是谷歌输入法很好安装,要记得安装完输入法和fcitx后分别重启系统才能添加输入法就行了 内容简介 前言 安装前准备 安装搜狗拼音...
  • 1) 声明个为汉字的不可变字符串NSString * str = @"这是个汉字";2) 将字符串转成c语言中的不可变字符串 CFStringRef strRef = (CFStringRef)str;3) 将上述c中的不可变字符串转成c中可变的字符串 ...
  • 数据库端拼音码函数

    2014-02-09 18:17:29
    之所以写这个是因为前端需要进行PinYin码快捷输入,基本行为模式就是在输入框中键入一系列拼音首字母去与数据库中的某字段的拼音码进行模糊适配,就是这样。 早期版本中的解决方案基本上是,查询过程找那个将...
  • Python 批量修改 汉语转拼音

    千次阅读 2016-01-23 15:18:35
    如果看过我上一篇博客的人可能会记得我之前进行批量处理图片大小的经历,就在那之后,经过一系列的步骤之后,我们终于得到了梦寐以求的Bundle包,只可惜是中文的,500多个包啊。全部是中文的。但是Unity对于中文路径...
  • 告别谷歌拼音输入法

    千次阅读 2012-12-21 12:21:54
    今天逛MSDN的时候突然看到篇日志,然后想到,为什么不谷歌词库转换到微软中去呢?这个教程使用下列情况, 从谷歌拼音输入法转微软拼音输入; 从搜狗拼音/五笔输入法转微软拼音输入; 从QQ拼/五
  • freeswitch语音识别一系列干货

    千次阅读 2019-03-21 16:46:43
    6、某大神写的一系列干货 7、语音识别——基于深度学习的中文语音识别系统框架 8、kaldi上第一个免费的中文语音识别例子 9、几个常见的语音交互平台的简介和比较 10、CMU Sphinx下载地址 11、FreeSwitch LUA ...
  • 为什么变量命名不建议用汉语拼音

    千次阅读 2019-07-22 10:15:17
    在进行编程时,变量通常不建议用拼音注释。但是,关于不建议用汉语拼音命名的原因,一般人只是说汉语拼音命名造成变量命名模糊,但没有分析过汉语拼音命名模糊的原因。 从语言学角度来讲,汉语(象形文字)和英语...
  • ios 中汉字 转换 拼音

    2016-03-01 20:25:52
    系统给我们提供类这么个函数 CFStringTransform(, , ,)  string :是你要转换的汉字 range:转换的范围 如果是null 则不限定范围 transform :①kCFStringTransformMandarinLatin转换成带声调的拼音  ②...
  • 内网安装完CentOS8,可以添加拼音输入法,但是切换到中文,也是输入不了。需要安装ibus-libpinyin包(ibus是系统默认安装了的)。于是百度找可以离线安装的办法。那就是切换软件包安装源,用我们安装系统时候的...
  • HanLP是一系列模型与算法组成的NLP工具包,由大快搜索主导并完全开源,目标是普及自然语言处理在生产环境中的应用。HanLP具备功能完善、性能高效、架构清晰、语料时新、可自定义的特点。 开源网址:HanLP: Han ...
  • 要实现的效果展示如下 ...接下来,我们按步骤来窥究竟。首先,是数据为了举例方便,test.js 中,我们使用简化版的数据:'use strict’ const cityList = [{ "id": "35", "provinc
  • Ubuntu 14.04 LTS 安装配置搜狗拼音输入法最近重装了N次系统,每次重装都要重新搜狗拼音输入法还有一系列文件。懒得再查别的文档,所以此处自己记录安装流程,下次直接搜自己博客按照流程安装就好了……笔者的系统...
  • android 中文转成拼音

    2013-09-09 17:12:14
    //把字符串转换为一系列比特,它们可以以比特形式与 CollationKeys 相比较 CollationKey key1=collator.getCollationKey(o1.toString().toLowerCase());//要想不区分大小写进行比较用o1.toString().toLowerCase...
  • 经过一系列操作之后,对刘德华建index,竟然搜liudh,刘dh,各种奇葩的搜索都能搜出来,这是为啥呢?让我们来仔细分析一下。 如官网的配置 配置analyzer PUT /medcl3/ { "settings" : { "analysis" : { "analyzer...
  • 最近在ie8碰到个js问题,需要实现(ie8)使用拼音或者拼音首字母来检索select中的内容,原来的combobox只能支持汉字输入检索,现在需要进行改进,现在我将一步一步的实现方法记录下来,功能简单,也可能有bug和不足...
  • 来兴致了安装了个ubuntu13.04玩玩linux,遇到了各种菜bi问题。  1.如何调出自带的中文输入法  安装的时候装个bi直接安装了英文版的。进入系统后,发现找不到中文输入法,蛋疼般地只能用拼音谷歌度娘了几下,...
  • 汉字转拼音技术方案讨论

    千次阅读 2013-11-07 17:18:53
    汉字转拼音技术方案讨论    最近在项目中有汉字转拼音的需求,虽然之前对此有一些初步的了解,但还是不够系统,细节的地方考虑的不是很全面。所以又专门花时间对此进行了研究和梳理。本文总结了三种不同的方案,并...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 13,124
精华内容 5,249
关键字:

一系列的拼音