solr配置分词器
一、solr4.10 + mmseg4j-2.2.0分词器
1、solr的安装部署:http://www.cnblogs.com/honger/p/5876289.html,注意不同的版本安装方式可能不同。
solr与mmseg4j对应的版本,不要弄错,否则会出错。
- mmseg4j-solr-2.0.0.jar 要求 lucene/solr >= 4.3.0。在 lucene/solr [4.3.0, 4.7.1] 测试过兼容可用。
- mmseg4j-solr-2.1.0.jar 要求 lucene/solr 4.8.x
- mmseg4j-solr-2.2.0.jar 要求 lucene/solr [4.9, 4.10.x]
- mmseg4j-solr-2.3.0.jar 要求 lucene/solr [5.0, ]
地址:https://github.com/chenlb/mmseg4j-solr,往下拉找到下载,点击即可

2、下载好后,解压,将解压出来的两个jar包使用拷贝到tomcat的solr工程的lib下面,将mmseg4j-core-1.10.0.jar里的data文件夹里的以*.dic结尾的文件拷贝到solrhome的dic文件夹下,这个dic文件夹是自己创建的。

3、修改solrhome/collection2/conf/schma.xml,添加以下代码(collection2是你创建的core对象,以你自己创建的为准,代码中dicPath这个属性指的是你的dic文件目录,这里使用的是相对路径,相对于solrhome)
<fieldtype name="textComplex" class="solr.TextField" positionIncrementGap="100">
<analyzer>
<tokenizer class="com.chenlb.mmseg4j.solr.MMSegTokenizerFactory" mode="complex" dicPath="dic"/>
</analyzer>
</fieldtype>
<fieldtype name="textMaxWord" class="solr.TextField" positionIncrementGap="100">
<analyzer>
<tokenizer class="com.chenlb.mmseg4j.solr.MMSegTokenizerFactory" mode="max-word" />
</analyzer>
</fieldtype>
<fieldtype name="textSimple" class="solr.TextField" positionIncrementGap="100">
<analyzer>
<tokenizer class="com.chenlb.mmseg4j.solr.MMSegTokenizerFactory" mode="simple" dicPath="dic" />
</analyzer>
</fieldtype>
4、启动tomcat

二、第二种方式solr-4.10.0 + IKAnalyzer分词器
IKAnalyzer分词器目前只能支持到solr5以下,以上的已经不支持了
1、IKAnalyzer分词器的下载:http://pan.baidu.com/s/1cBUw5g
2、IKAnalyzer解压后的目录结构,将其中的jar包拷贝到solr/WEB-INF/lib下,再将
IKAnalyzer.cfg.xml、ext_stopword.dic mydict.dic copy到 Tomcat的
webapps/solr/WEB-INF/classes下

3、修改你想要增加字段域的那个core下的schema.xml,我的是collection1添加以下代码
<fieldType name="text_ik" class="solr.TextField">
<analyzer class="org.wltea.analyzer.lucene.IKAnalyzer"/>
</fieldType> <field name="item_title" type="text_ik" indexed="true" stored="true"/>
4、启动tomcat

solrjTest.java参考文档地址:http://mirrors.cnnic.cn/apache/lucene/solr/ref-guide/apache-solr-ref-guide-6.2.pdf,可用ctrl+s将它下载下来。
import org.apache.solr.client.solrj.SolrClient;
import org.apache.solr.client.solrj.SolrQuery;
import org.apache.solr.client.solrj.impl.HttpSolrClient;
import org.apache.solr.client.solrj.response.QueryResponse;
import org.apache.solr.common.SolrDocument;
import org.apache.solr.common.SolrDocumentList;
import org.apache.solr.common.SolrInputDocument;
import org.junit.Test; public class SolrTest { @Test
public void create() throws Exception {
String urlString = "http://192.168.243.128:8080/solr";
SolrClient solr = new HttpSolrClient.Builder(urlString).build();
//集群
/*String zkHostString = "zkServerA:2181,zkServerB:2181,zkServerC:2181/solr";
SolrClient solr = new CloudSolrClient.Builder().withZkHost(zkHostString).build();*/
SolrInputDocument document = new SolrInputDocument();
document.addField("id", "552199");
document.addField("name", "Gouda cheese wheel");
document.addField("price", "49.99");
solr.add(document); // Remember to commit your changes! solr.commit();
} @Test
public void delete() throws Exception {
String urlString = "http://192.168.243.128:8080/solr";
SolrClient solr = new HttpSolrClient.Builder(urlString).build();
solr.deleteById("552199");
solr.deleteByQuery("id:100");
solr.commit();
} @Test
public void query() throws Exception {
String urlString = "http://192.168.243.128:8080/solr";
SolrClient solr = new HttpSolrClient.Builder(urlString).build();
SolrQuery query = new SolrQuery();
query.setQuery("*:*");
query.setStart(20);
query.setRows(50);
//增加高亮域
query.setHighlight(true);
query.addHighlightField("item_title");
query.setHighlightSimplePre("<em style=\"color:red\">");
query.setHighlightSimplePost("</em>");
query.addHighlightField("item_title");
QueryResponse queryResponse = solr.query(query);
SolrDocumentList solrDocumentList = queryResponse.getResults();
for (SolrDocument solrDocument : solrDocumentList) {
System.out.println("------------------------------------");
System.out.println(solrDocument.get("id"));
System.out.println(solrDocument.get("item_title"));
System.out.println(solrDocument.get("item_category_name"));
System.out.println(solrDocument.get("item_sell_point"));
System.out.println(solrDocument.get("item_price"));
System.out.println("------------------------------------");
}
} }
solr配置分词器的更多相关文章
- Solr7.3.0入门教程,部署Solr到Tomcat,配置Solr中文分词器
solr 基本介绍 Apache Solr (读音: SOLer) 是一个开源的搜索服务器.Solr 使用 Java 语言开发,主要基于 HTTP 和 Apache Lucene 实现.Apache ...
- CentOS 配置solr中文分词器
第一步:使用IK-Analyzer.把分析器的文件夹上传到服务器. 第二步:需要把分析器的jar包添加到solr工程中. [root@bogon IK Analyzer 2012FF_hf1]# cp ...
- Solr IK分词器配置
下载地址:https://search.maven.org/search?q=com.github.magese 分词器配置: 参考:https://www.cnblogs.com/mengjinlu ...
- lucene&solr学习——分词器
下图是语汇单元的生成过程: 从一个Reader字符流开始,创建基于Reader的Tokenizer分词器,经过三个TokenFilter生成语汇单元Tokens. 要看分词器的分析效果,只需要看Tok ...
- solr 中文分词器IKAnalyzer和拼音分词器pinyin
solr分词过程: Solr Admin中,选择Analysis,在FieldType中,选择text_en 左边框输入 “冬天到了天气冷了小明不想上学去了”,点击右边的按钮,发现对每个字都进行分词. ...
- solr IK分词器
1.把IK文件夹上传到服务器tmp文件夹 2.把需要的jar导入到solr项目中 # cp IKAnalyzer2012FF_u1.jar /usr/local/solr/tomcat/webapps ...
- Solr(四)Solr实现简单的类似百度搜索高亮功能-1.配置Ik分词器
配置Ik分词器 一 效果图 二 实现此功能需要添加分词器,在这里使用比较主流的IK分词器. 1 没有配置IK分词器,用solr自带的text分词它会把一句话分成单个的字. 2 配置IK分词器,的话它会 ...
- Solr6.5配置中文分词器
Solr作为搜索应用服务器,我们在使用过程中,不可避免的要使用中文搜索.以下介绍solr自带的中文分词器和第三方分词器IKAnalyzer. 注:下面操作在Linux下执行,所添加的配置在windo ...
- solr 中文分词 IKAnalyzer
solr中文分词器ik, 推荐资料:http://iamyida.iteye.com/blog/2220474?utm_source=tuicool&utm_medium=referral 使 ...
随机推荐
- ES 20 - 查询Elasticsearch中的数据 (基于DSL查询, 包括查询校验match + bool + term)
目录 1 什么是DSL 2 DSL校验 - 定位不合法的查询语句 3 match query的使用 3.1 简单功能示例 3.1.1 查询所有文档 3.1.2 查询满足一定条件的文档 3.1.3 分页 ...
- Laravel --- Laravel 5.3 发送邮件配置
版本:laravel 5.3 发送邮箱:QQ邮箱 根据官网以及别人的教程配置邮件发送,并且对配置过程中遇到的坑进行填补,做一总结,留待参考. 一.开启stmp 进入QQ邮箱,设置-服务,开启smtp. ...
- Python 爬虫从入门到进阶之路(八)
在之前的文章中我们介绍了一下 requests 模块,今天我们再来看一下 Python 爬虫中的正则表达的使用和 re 模块. 实际上爬虫一共就四个主要步骤: 明确目标 (要知道你准备在哪个范围或者网 ...
- Flask学习之旅--简易留言板
一.写在前面 正所谓“纸上得来终觉浅,方知此事要躬行”,在看文档和视频之余,我觉得还是要动手做点什么东西才能更好地学习吧,毕竟有些东西光看文档真的难以理解,于是就试着使用Flask框架做了一个简易留言 ...
- 简单DI
<?php class DI { private $container; public function set($key, $obj, ...$args) { $this->contai ...
- node.js中模块,require
在php,C++中都有命名空间的概念,命名空间主要是用来解决引入文件存在函数,类,变量重名的问题,在node.js中,没有命名空间这么复杂的概念,在node中,有模块的概念,也就是将功能性的代码都放在 ...
- 在CentOS 7上安装Python3
源码包安装 Python官方没有对Linux打包, 需要下载源码包进行编译. 可以自己下载最新版本的Python, 在Python下载页面, 点击Python3.x.x版本对应的Download, 在 ...
- C# 死锁 TaskCompletionSource
在异步转同步时,使用不当容易造成死锁(程序卡死) 看如下案例: 有一个异步方法 private static async Task TestAsync() { Debug.WriteLine(&quo ...
- Fabric1.4源码解析:链码实例化过程
之前说完了链码的安装过程,接下来说一下链码的实例化过程好了,再然后是链码的调用过程.其实这几个过程内容已经很相似了,都是涉及到Proposal,不过整体流程还是要说一下的. 同样,切入点仍然是fabr ...
- 常用的方法论-SWOT