【061】solr6.3与MySQL结合使用的简明教程(五)——中文分词

中文分词

中文的词和英文的单词完全不同。因为英文各个单词都是用空格分隔,而中文所有的字都连在一起。因此需要增加中文分词的功能,来让程序识别出各个词语,方便搜索。

举个例子:有一个网上书店,这个网上书店有一个搜索书的搜索框。用户在搜索框输入“司汤达的红与黑”,系统就应该识别出“司汤达”和”红与黑“,来找到相应的书。

本文使用了 solr6.3与MySQL结合使用的简明教程(四) 里面的表结构。中文分词功能,使用了一个开源的中文分词器Jcseg。项目的GitHub地址在 https://github.com/lionsoul2014/jcseg 。本文使用了2.1.0 Release 版本。

从GitHub上下载jcseg 2.1.0 Release 版本的源代码。确保你的电脑上已经安装java8,eclipse 和 Maven。本文不涉及这些文件的安装,请你自行学习如何安装这些软件。

把解压后得到的 jcseg 文件夹放到 eclipse 的工作空间里。确保jcseg文件夹里面没有 .git文件夹和.gitignore文件。我使用的是 eclipse Jave EE版。zip压缩包解压后得到的文件夹名称是jcseg-2.1.0-release。建议你改成jcseg,以便符合对项目名称的约定。打开 eclipse,File → import → Existing Maven Projects → next → Root Directory 选择 jcseg 文件夹 → Projects 全部选中,Add project(s) to working set 复选框也要选中 → 复选框下面的下拉列表选择jcseg → 点击Finish按钮。之后就可以成功导入了jcseg 项目。

为了使用 jcseg 分词器,我们需要编译源代码。鼠标选中项目jcseg,右键打开快捷菜单。快捷菜单中选择 Run As,子菜单中点击 Maven Build ... ,随即打开了Maven命令的对话框。在 Goals 文本框中输入clean package,点击Run按钮。等待编译完成后,进入子项目 jcseg-core 下的 target 文件夹,把 jcseg-core-2.1.0.jar 文件拷贝到 【solr安装目录】/example/example-DIH/solr/db4/lib/…路径下面。
在子项目 jcseg-analyzer 下面的 target 文件夹下,找到 jcseg-analyzer-2.1.0.jar 文件,拷贝到【solr安装目录】/example/example-DIH/solr/db4/lib/…路径下面。

用编辑软件打开 solrconfig.xml 文件。搜索”lib“字符串,找到下面的代码:






  
  

  
  
  

其中 mysql-connector-java-5.1.40.jar 那一个lib标签,是在上一篇教程 solr6.3与MySQL结合使用的简明教程(四) 中添加的。我们在上一篇教程的例子中继续做修改。紧接着上面的代码另起一行,加入 jcseg 两个 jar 包的路径:



用编辑器打开 managed-schema 文件。加入新的fieldType标签。代码如下:

  
  
      
          
      
  
  
  
      
          
      
  
  
  
      
          
      
  
  
  
      
          
      
  

因为要同时检索多个field: text 和 authorName,所以要用到 copyField 标签。copyField 标签的作用是把 authorName 的内容复制到 text 中。同时要保证 text 的属性 multiValued 等于 true。修改后的代码如下:



db-data-config.xml 不需要做改动,直接用上一篇教程的就行。

访问URL http://localhost:8983/solr/db4/select?indent=on&q=司汤达写了红与黑&rows=44&wt=json

返回的数据如下:

{
  "responseHeader":{
    "status":0,
    "QTime":2,
    "params":{
      "q":"司汤达写了红与黑",
      "indent":"on",
      "rows":"44",
      "wt":"json"}},
  "response":{"numFound":1,"start":0,"docs":[
      {
        "id":"b13",
        "isbn":"isbn13",
        "name":"红与黑",
        "text":["红与黑 isbn13",
          "司汤达"],
        "authorName":["司汤达"],
        "_version_":1557285568502562816}]
  }}

系列教程

solr6.3与MySQL结合使用的简明教程(一)

solr6.3与MySQL结合使用的简明教程(二)

solr6.3与MySQL结合使用的简明教程(三)——SolrException: undefined field text错误如何解决

solr6.3与MySQL结合使用的简明教程(四)

solr6.3与MySQL结合使用的简明教程(五)——中文分词

你可能感兴趣的:(solr,数据库,JAVA,mysql,solr,搜索)