solr、Lucene、IKAnalyzer这三者关系是怎样的?
lucene 是开源搜索引擎
solr 是基于 lucene开发的搜索引擎
IK 是中文分词。
lucene 不是一个搜索引擎,只是一个基础的文件索引工具包,或者叫“搜索引擎开发包”。不能单独作为程序运行,但是可以使用它来开发搜索引擎。你可 以认为它就是一个普通开发包。必须用它开发自己的应用后才能 运行。lucene定义了并处理索引数据的数据结构,在disk上的分布等。提供创建和读取 索引文件的接口。
索引文件是lucene用于存放索引数据的真正位置。
而solr就是一个基于lucene开发包开发的搜索引擎。下载solr包,安装就可以运行,不用再开发。如果你有需要也可以在solr上再开发。
solr安装后根据需要配置一下,就可以索引自己的数据进去,并进行搜索。除solr外还有elastic search 等基于lucene开发的其它
开源搜索引擎。
IKAnalyzer 和solr没有直接关系。 IK 是用来分词的一个工具包,有支持lucene的接口。所谓分词就是把一句话分成一些词语, 英文
可以简单的用空格分割:“this is a cat”.分词后就变为4个词“this” "is" "a" "cat“ 。对于中文句子”这是只猫
“ 就不能简单分割来。怎么分割才有意义呢?有不同的算法来处理中文分词,IK就是其中的一种,用来进行中文分词。
lucene在索引文件前也需要对一些句子分词。所以对于中文 ,要分词可以用IK工具包。 同样做中文分词的还有 庖丁 mmj(后演变为
smartcn, 目前支持最新的solr版本 solr4.3)等中文分词工具。 所以你可以认为 用IK 可以完成lucene索引流程中的分词步
骤。完整的数据索引除了分词还有其它步骤要做。所以可认为IK是一个lucene的 分词插件。用于分中文。lucene还有很多其它语言的分词插件。
上述内容摘自CSDN论坛:http://bbs.csdn.net/topics/390436346?page=1
当运行分词程序或者包含分词的程序,例如我最近使用到的TF-IDF算法,就会使用到lucene和IKAnalyzer两个jar包。此处参考自:TF-IDF理解及其Java实现
当程序只添加IKAnalyzer时候,程序中的报错为:
Exception in thread "main" java.lang.NoClassDefFoundError: org/apache/lucene/analysis/Analyzer
at java.lang.ClassLoader.defineClass1(Native Method)
at java.lang.ClassLoader.defineClass(Unknown Source)
at java.security.SecureClassLoader.defineClass(Unknown Source)
at java.net.URLClassLoader.defineClass(Unknown Source)
at java.net.URLClassLoader.access$100(Unknown Source)
at java.net.URLClassLoader$1.run(Unknown Source)
at java.net.URLClassLoader$1.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
at tf_idf.ReadExtract.cutWords(ReadExtract.java:69)
at tf_idf.ReadExtract.tfAllFiles(ReadExtract.java:130)
at tf_idf.ReadExtract.main(ReadExtract.java:205)
Caused by: java.lang.ClassNotFoundException: org.apache.lucene.analysis.Analyzer
at java.net.URLClassLoader.findClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
... 15 more
此时导入Lucene包即可:
其中IKAnalyzer和Lucene包的版本采用上述博客提供的版本,具体如下:
solr、Lucene、IKAnalyzer这三者关系是怎样的?的更多相关文章
- solr 启动报错Cannot load analyzer: org.wltea.analyzer.lucene.IKAnalyzer
schema.xml 配置文件信息: <field name="title" type="text_ik" indexed="true" ...
- solr配置IKAnalyzer抛出ClassNotFoundException
这个问题搞了很久,在QQ群上问了很久,关键很气人的是我居然被群主给开了.我也是醉了.我不知道我哪里得罪了那个solr群的群主. 废话不多说.抛出的异常如下: 刚开始一直认为是没有找到类,也就相当于没找 ...
- 【solr】Solr与JDK对应版本关系,Tomcat与JDK
Solr与JDK对应版本关系,Tomcat与JDK版本对应关系 最新在部署solrCloud集群,由于自己机器上用的JDK都是JDK1.7的,然后我就从网上下载了最新下载了最先的solr6.6.0和最 ...
- lucene+IKAnalyzer实现中文纯文本检索系统
首先IntelliJ IDEA中搭建Maven项目(web):spring+SpringMVC+Lucene+IKAnalyzer spring+SpringMVC搭建项目可以参考我的博客 整合Luc ...
- linux下bus,device,driver三者关系
linux下bus,device,driver三者关系 1.bus: 总线作为主机和外设的连接通道,有些总线是比较规范的,形成了很多协议.如 PCI,USB,1394,IIC等.任何设备都可以选择合适 ...
- 【转】Android 异步消息处理机制 让你深入理解 Looper、Handler、Message三者关系
转载请标明出处:http://blog.csdn.net/lmj623565791/article/details/38377229 ,本文出自[张鸿洋的博客] 很多人面试肯定都被问到过,请问Andr ...
- Android 异步消息处理机制 让你深入理解 Looper、Handler、Message三者关系
转自:http://blog.csdn.net/lmj623565791/article/details/38377229 ,本文出自[张鸿洋的博客] 很多人面试肯定都被问到过,请问Android中的 ...
- VUE中 $on, $emit, v-on三者关系
VUE中 $on, $emit, v-on三者关系 每个vue实例都实现了事件借口 使用$on(eventName)监听事件 使用$emit(eventName)触发事件 若把vue看成家庭(相当于一 ...
- Feign Ribbon Hystrix 三者关系 | 史上最全, 深度解析
史上最全: Feign Ribbon Hystrix 三者关系 | 深度解析 疯狂创客圈 Java 分布式聊天室[ 亿级流量]实战系列之 -25[ 博客园 总入口 ] 前言 疯狂创客圈(笔者尼恩创建的 ...
随机推荐
- Linux下printf函数显示不同的颜色(转)
Linux下printf函数显示不同的颜色 在学习Linux网络编程的时候做一个聊天系统,当时为了界面更漂亮点,于是搜索了下关于printf()函数的用法,给printf的输出加上些特效比如颜色,可以 ...
- 24模拟keepalved vrrp功能,监听主节点,如果主节点不可访问则备节点启动并配置LVS实现接管主节点的资源提供服务(提醒:注意ARP缓存)
[root@lb04 scripts]# cat ha_lv.sh #!/bin/bash while true do check_count=$(nmap 10.0.0.13|grep " ...
- python之函数enumerate()
enumerate函数可以遍历列表 for i in range(len(a)): print a[i] 等价于: for index,item in enumerate(a): print inde ...
- Java基础09 类数据与类方法(转载)
我们一直是为了产生对象而定义类(class)的.对象是具有功能的实体,而类是对象的类型分类.这是面向对象的一个基本概念. static数据成员 有一些数据用于表述类的状态.比如Human类,我们可 ...
- python django -7 Git与项目
git的使用,主要包括: 本地仓库的命令 远程仓库的命令 项目需求.页面.模型类的设计,及页面的使用 Git简介 Git是目前世界上最先进的分布式版本控制系统 安装 sudo apt-get inst ...
- ubuntu16.04.3安装MinDoc
1. 安装mysql apt-get install mysql-serverapt-get install mysql-client 2. 登陆mysql mysql -u root -p输入安装过 ...
- hdu 4587(割点的应用)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4587 思路:题目的意思很简单,就是删除任意2个节点以及关联的边,求图的最大连通分量数.我们知道删除割点 ...
- Laravel开发:Laravel核心——Ioc服务容器源码解析(服务器解析)
make解析 服务容器对对象的自动解析是服务容器的核心功能,make 函数.build 函数是实例化对象重要的核心,先大致看一下代码: public function make($abstract) ...
- openssl 升级 操作 -1
好多公司都会用绿盟扫描系统漏洞,里边就会涉及到ssl 漏洞,原因是openssl 版本低导致,会让你升级到指定版本.下面就介绍一下openssl 版本升级的操作方案. 一. 查看系统版本 [root@ ...
- 密钥管理服务KMS
密钥管理服务 KMS - 腾讯云 https://cloud.tencent.com/product/kms