概念说明:同义词大体的意思是指,当用户输入一个词时,solr会把相关有相同意思的近义词的或同义词的term的语段内容从索引中取出,展示给用户,提高交互的友好性(当然这些同义词的定义是要在配置文件中事先定义好的),比如:用户输入:日本,那么就可能有一些相关的近义词如:鬼子,屠杀,战犯等的词,这个可在配置文件中事先定义好。

搜索:http://localhost:8080/solr/testcore/select/?q=content:笔笔音乐会

结果如下:

结果不仅有笔笔音乐会,还有周笔畅音乐会。(首先前提是笔笔和周笔畅在词典中存在的,配置了同义词,能被mmseg4j分析器分出来)

看配置:

solr中自带有synonyms的功能,但是功能很有限,因为中文需要在分词的基础上进行搜索,所以官方的配置就没有多大意义。

一) 官方的配置:这个配置是在cookbook中有提及的,但是在中文分词上没办法加在一起,所以基本上没用。

1:在schema.xml的<types>标签中添加<fieldType>,如下:

<fieldtype name="text_mmseg" class="solr.TextField"  positionIncrementGap="100">

        <analyzer>    

            <tokenizer class="com.chenlb.mmseg4j.solr.MMSegTokenizerFactory" mode="complex" dicPath="mmseg4jdic"/> 

            <filter class="solr.SynonymFilterFactory" synonyms="synonyms.txt" ignoreCase="true" expand="false" />

   <filter class="solr.LowerCaseFilterFactory"/>

            <!-- 默认的路径是core根目录,如果采用同级目录,则:../mmseg4jdic -->

      </analyzer>   

   </fieldtype>

<field name="content" type="text_mmseg" indexed="true" stored="true"/>

上面标记蓝色的:可以使其他的如:“solr.WhitespaceTokenizerFactory”。注意:IKanalyzer的IKTokenizerFactory不能直接用在solr中,需要修改源码重新编译打包才能使用,配置同义词。

2 、这其中涉及到的synonyms.txt文件是配置文件中原来就有的,这个就是同义词的配置文件,和schema.xml文件同级目录。大体格式如下

# The ASF licenses this file to You under the Apache License, Version 2.0

# (the "License"); you may not use this file except in compliance with

# the License.  You may obtain a copy of the License at

#

#     http://www.apache.org/licenses/LICENSE-2.0

#

# Unless required by applicable law or agreed to in writing, software

# distributed under the License is distributed on an "AS IS" BASIS,

# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.

# See the License for the specific language governing permissions and

# limitations under the License.



#-----------------------------------------------------------------------

#some test synonym mappings unlikely to appear in real input text

aaafoo => aaabar

bbbfoo => bbbfoo bbbbar

cccfoo => cccbar cccbaz

fooaaa,baraaa,bazaaa



# Some synonym groups specific to this example

GB,gib,gigabyte,gigabytes

MB,mib,megabyte,megabytes

Television, Televisions, TV, TVs

#notice we use "gib" instead of "GiB" so any WordDelimiterFilter coming

#after us won't split it into two words.



# Synonym mappings can be used for spelling correction too

pixima => pixma

杨颖 => angelababy

angelababy => 杨颖

徐熙媛 => 大S

徐熙娣 => 小S

周笔畅 => 笔笔

杨颖,angelababy

angelababy,杨颖

徐熙媛,大S,小S姐姐

徐熙娣,小S,大S妹妹

周笔畅,笔笔,超女笔笔

我已经在上面加入了中文的配置(由于字符集的问题,请修改完成后用EditNote打开并选择格式-->UTF-8编码无DOM,如有乱码就改),意思是输入这几个中文字都是一样的搜索结果,另外其中还有=>及以逗号分隔的,这里引用官方的话做参考:

就是说=>指一对一,以逗号分隔的是组群,也就是多对多

solr-用mmseg4j配置同义词索引和检索(IKanlyzer需要修改源码适应solr接口才能使用同义词功能)的更多相关文章

  1. Sentinel控制台1.8.3修改源码,修改配置后推送到Nacos

    目录 1. 接着上一篇 2. 思路 3. 下载Sentinel源码 4. 看Gateway里面读取的配置信息 5. 修改Sentinel控制台源码 6. 熔断规则测试 7. 限流规则测试 8. 打包使 ...

  2. Solr初始化源码分析-Solr初始化与启动

    用solr做项目已经有一年有余,但都是使用层面,只是利用solr现有机制,修改参数,然后监控调优,从没有对solr进行源码级别的研究.但是,最近手头的一个项目,让我感觉必须把solrn内部原理和扩展机 ...

  3. 深入浅出Mybatis系列(四)---配置详解之typeAliases别名(mybatis源码篇)

    上篇文章<深入浅出Mybatis系列(三)---配置详解之properties与environments(mybatis源码篇)> 介绍了properties与environments, ...

  4. 【转】Ubuntu 14.04.3上配置并成功编译Android 6.0 r1源码

    http://www.linuxidc.com/Linux/2016-01/127292.htm 终于成功把Android 6.0 r1源码的源码编译.先上图,这是在Ubuntu中运行的Android ...

  5. 深入浅出Mybatis系列四-配置详解之typeAliases别名(mybatis源码篇)

    注:本文转载自南轲梦 注:博主 Chloneda:个人博客 | 博客园 | Github | Gitee | 知乎 上篇文章<深入浅出Mybatis系列(三)---配置详解之properties ...

  6. Spring源码阅读 之 配置的加载(希望有喜欢源码的朋友一起交流)

    想写Spring的源码方面的东西想了好久了,之前花了一段时间学习了SpringCloud,现在总算对SpringCloud有了一个大概的了解,从今天开始好好读一篇Spring的源码,结合书本跟网上的一 ...

  7. centos7 nginx配置httpsCenos(6.6/7.1)下从源码安装Python+Django+uwsgi+nginx环境部署(二)

     1.yum安装nginx 下载对应当前系统版本的nginx包(package) # wget  http://nginx.org/packages/centos/7/noarch/RPMS/ngin ...

  8. 使用Lucene索引和检索POI数据

    1.简介 关于空间数据搜索,以前写过<使用Solr进行空间搜索>这篇文章,是基于Solr的GIS数据的索引和检索. Solr和ElasticSearch这两者都是基于Lucene实现的,两 ...

  9. Solr系列二:Solr与mmseg4j的整合

    mmseg4j是一个很好的中文分词器,solr与mmseg4j的整合也非常简单.如下: 第一步:下载mmseg4j的jar包,网上搜索一下有很多下载地址,如下是csdn上的一个连接:http://do ...

随机推荐

  1. 2017-02-20 注册.Net Framework4.0

    在使用IIS发布Web应用程序时,有时会遇到Asp.Net 4.0尚未在Web服务器上注册的问题,需要手动注册下.Net Framework 4.0. 注册.net Framwork4.0 步骤,以w ...

  2. Javascript-我对作用链、闭包、原型及原型链的理解

    Javascript-基础概念总结(2) 最近学习一些javascript基础知识,也解决了很多之前的疑惑,记得第一次被问及怎样理解闭包时,我的回答是:就是类似于封装吧!现在想想是有多白痴,学习技术是 ...

  3. hzau 1206 MathematicalGame

    1206: MathematicalGame Time Limit: 2 Sec  Memory Limit: 1280 MBSubmit: 124  Solved: 15[Submit][Statu ...

  4. 如何学习Android系统源码(转)

    一. Android系统的源代码非常庞大和复杂,我们不能贸然进入,否则很容易在里面迷入方向,进而失去研究它的信心.我们应该在分析它的源代码之前学习好一些理论知识,下面就介绍一些与Android系统相关 ...

  5. Elasticsearch使用积累

    常用插件 Head查看分片情况,操作简单api Bigdesk监控所在机器的CPU,IO,JVM等指标,简单分片概览 KOPF查看集群gc回收磁盘性能, 分片情况, 简单操作api, 感觉该插件较He ...

  6. GEF入门实例_总结_06_为编辑器添加内容

    一.前言 本文承接上一节:GEF入门实例_总结_05_显示一个空白编辑器 在上一节我们为我们的插件添加了一个空白的编辑器,这一节我们将为此编辑器添加内容. 二.GEF的MVC模式 在此只简单总结一下, ...

  7. bzoj3163 Eden的新背包问题

    多重背包,$q$ 次询问,每次问删一个物品之后花费 $x$ 能装多少物品 $n \leq 3000, x \leq 1000, q \leq 300000$ sol: 网上有很多假做法 正解应该是考虑 ...

  8. 数据处理之pandas库

    1. Series对象 由于series对象很简单,跟数组类似,但多了一些额外的功能,偷个懒,用思维导图表示 2. DaraFrame对象 DataFrame将Series的使用场景由一维扩展到多维, ...

  9. Python collections系列之双向队列

    双向队列(deque) 一个线程安全的双向队列 1.创建一个双向队列 import collections d = collections.deque() d.append(') d.appendle ...

  10. Azure Blob存储更改缓存时间

    Azure的Blob存储可以作为Http的服务来使用.很多客户已经把Blob作为图片存储的服务,这样稍作代码的修改,解决了图片服务器带宽.性能等多种问题. 但同时问题也出现了:在传统Http的服务中很 ...