中文的词和英文的单词完全不同。因为英文各个单词都是用空格分隔,而中文所有的字都连在一起。因此需要增加中文分词的功能,来让程序识别出各个词语,方便搜索。
举个例子:有一个网上书店,这个网上书店有一个搜索书的搜索框。用户在搜索框输入“司汤达的红与黑”,系统就应该识别出“司汤达”和”红与黑“,来找到相应的书。
本文使用了 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结合使用的简明教程(五)——中文分词