- 浏览: 857161 次
-
文章分类
- 全部博客 (365)
- java (124)
- spring mvc (21)
- spring (22)
- struts2 (6)
- jquery (27)
- javascript (24)
- mybatis/ibatis (8)
- hibernate (7)
- compass (11)
- lucene (26)
- flex (0)
- actionscript (0)
- webservice (8)
- rabbitMQ/Socket (15)
- jsp/freemaker (5)
- 数据库 (27)
- 应用服务器 (21)
- Hadoop (1)
- PowerDesigner (3)
- EJB (0)
- JPA (0)
- PHP (2)
- C# (0)
- .NET (0)
- html (2)
- xml (5)
- android (7)
- flume (1)
- zookeeper (0)
- 证书加密 (2)
- maven (1)
- redis (2)
- cas (11)
最新评论
-
zuxianghuang:
通过pom上传报错 Artifact upload faile ...
nexus上传了jar包.通过maven引用当前jar,不能取得jar的依赖 -
流年末年:
百度网盘的挂了吧???
SSO单点登录系列3:cas-server端配置认证方式实践(数据源+自定义java类认证) -
953434367:
UfgovDBUtil 是什么类
Java发HTTP POST请求(内容为xml格式) -
smilease:
帮大忙了,非常感谢
freemaker自动生成源代码 -
syd505:
十分感谢作者无私的分享,仔细阅读后很多地方得以解惑。
Nginx 反向代理、负载均衡、页面缓存、URL重写及读写分离详解
大概在 solr 1.3 刚出来的时候(2008 年底)就用过 DataImportHandler(DIH),当时觉得很方便的。后来由于有好多限制,就自己写了个做索引的框架。现有个简单的应用要用 dih 来做(小数据量的表,可以用它来做)。备忘记录下。
DataImportHandler 最大的优点是基本不用写代码,把数据库(其实也可以用 http/file 资源)中的记录放到索引中。现大概看下步骤:
1、编辑 solrconfig.xml 注册一个请求 uri 为 "/dataimport" 的请求处理器(org.apache.solr.handler.dataimport.DataImportHandler),代码如:
- <requestHandler name="/dataimport" class="org.apache.solr.handler.dataimport.DataImportHandler">
- <lst name="defaults">
- <str name="config">data-config.xml</str>
- </lst>
- </requestHandler>
<requestHandler name="/dataimport" class="org.apache.solr.handler.dataimport.DataImportHandler"> <lst name="defaults"> <str name="config">data-config.xml</str> </lst> </requestHandler>
2、创建 data-config.xml 文件放到 solr.home/conf 目录下,内容如下:
- <dataConfig>
- <dataSource type="JdbcDataSource"
- driver="com.mysql.jdbc.Driver"
- url="jdbc:mysql://localhost/dbname"
- user="user-name"
- password="password"/>
- <document>
- <entity name="id"
- query="select id,name from mytable">
- </entity>
- </document>
- </dataConfig>
<dataConfig> <dataSource type="JdbcDataSource" driver="com.mysql.jdbc.Driver" url="jdbc:mysql://localhost/dbname" user="user-name" password="password"/> <document> <entity name="id" query="select id,name from mytable"> </entity> </document> </dataConfig>
3、在 schema.xml 里创建 id 与 name 的字段声明。
4、把 mysql 的 jdbc.jar 放到 solr.home/lib 目录下。
5、启动 solr 后,执行命令:
http://localhost:8080/solr/dataimport?command=full-import 这 url 告诉 solr 做全量索引,做索引中会删除所有数据。当然也可以用 clean=false 参数来告诉它不删除,但也会删除相同id的(在 scheam.xml 的uniqueKey 声明的)。http://localhost:8080/solr/dataimport?command=full-import&clean=false
上面的是 mysql 字段与 scheam.xml 声明的一样,当然不一样时可以用 sql 的 as 来使它们一样。
还可以用 data-config.xml 里指定,如:
- <dataConfig>
- <dataSource type="JdbcDataSource"
- driver="com.mysql.jdbc.Driver"
- url="jdbc:mysql://localhost/dbname"
- user="user-name"
- password="password"/>
- <document>
- <entity name="id"
- query="select id,name from mytable">
- <field column="id" name="solr_id"/>
- <field column="name" name="solr_name"/>
- </entity>
- </document>
- </dataConfig>
<dataConfig> <dataSource type="JdbcDataSource" driver="com.mysql.jdbc.Driver" url="jdbc:mysql://localhost/dbname" user="user-name" password="password"/> <document> <entity name="id" query="select id,name from mytable"> <field column="id" name="solr_id"/> <field column="name" name="solr_name"/> </entity> </document> </dataConfig>
entity/field 中的 name 是指 scheam.xml 里指定的,column 是 sql 里出来的字段。
大多数,做索引时的数据不是在一个表里的,比较一对多的。DIH 还提供多表取数据。
把 data-config.xml 改为:
- <dataConfig>
- <dataSource type="JdbcDataSource"
- driver="com.mysql.jdbc.Driver"
- url="jdbc:mysql://localhost/dbname"
- user="user-name"
- password="password"/>
- <document>
- <entity name="outer"
- query="select id,name,desc from mytable">
- <field column="id" name="solr_id"/>
- <field column="name" name="solr_name"/>
- <entity name="inner"
- query="select details from another_table where id ='${outer.id}'">
- <field column="details" name="solr_details"/>
- </entity>
- </entity>
- </document>
- </dataConfig>
<dataConfig> <dataSource type="JdbcDataSource" driver="com.mysql.jdbc.Driver" url="jdbc:mysql://localhost/dbname" user="user-name" password="password"/> <document> <entity name="outer" query="select id,name,desc from mytable"> <field column="id" name="solr_id"/> <field column="name" name="solr_name"/> <entity name="inner" query="select details from another_table where id ='${outer.id}'"> <field column="details" name="solr_details"/> </entity> </entity> </document> </dataConfig>
在 scheam.xml 里指定 solr_details 字段为多值的 multiValued="true"。在上面 inner entity 里的 sql 语句可以加参数 ${outer.id} 就是 mytable 的 id 字段。
修改好后,重启,再做一次索引就有效果了,一对多一个缺点是会有 N+1 个 sql 查询。对小数据量的索引合适用 solr data import。
发表评论
-
Solr4.0+IKAnalyzer中文分词安装
2012-11-29 19:14 1598有近2年没接触Solr跟Lucene ... -
solr搜索打分规制排序
2012-09-26 21:58 2422solr使用了Lucene的内核,也继承了Luce ... -
solr DataimportHanler
2012-09-22 17:01 1273大多数的应用程序将数据存储在关系数据库、xml文件 ... -
solr第一弹 autocomplete(自动补全)
2012-09-22 16:38 1480百度和google中都有 ... -
全文搜索服务器solr之客户端 - solrj二次开发
2012-09-21 09:07 4887Solrj已经是很强大的solr客户端了。它本身就包装了h ... -
JAVA环境下利用solrj二次开发SOlR搜索的环境部署常见错误
2012-09-20 11:36 1804问题一:出现控制台坏的响应错误一Bad reque ... -
Solr学习总结
2012-09-20 10:06 6449一、 SOLR搭建企业搜索平台 运行环境: 运行容器:Tomc ... -
olr 的客户端调用solrj 建索引+分页查询
2012-09-20 08:54 1954在 solr 3.5 配置及应用(一) 讲过一了 sol ... -
Solr笔记
2012-09-19 23:07 1304... -
Apache Solr 初级教程(介绍、安装部署、Java接口、中文分词)
2012-09-19 22:56 1785Apache Solr 介绍 Solr 是 ... -
lucene3.0 分页显示与高亮显示(转)
2012-09-19 11:44 1755分页类 Java代码 pac ... -
lucene3 中文IKAnalyzer分词例子
2012-09-10 13:37 1197import java.io.IOException; im ... -
Lucene3.0.1 学习笔记
2012-09-08 08:57 963不管怎么说,搜索都是非 ... -
Compass2.0.2自带例子解析
2012-09-05 08:47 1478Compass2.0.2自带例子解析: 下面的代码来自com ... -
compass站内搜索
2012-09-05 08:49 1011compass站内搜索: 1.去官方网站下载compass的 ... -
Spring + Compass + paoding配置
2012-09-05 08:50 1068Spring + Compass + paoding配置: ... -
配置compass的索引位置为相对路径
2012-09-01 10:49 1390配置compass的索引位置为相对路径: Compass是对 ... -
lucene创建索引
2012-09-01 10:48 1100lucene创建索引: import java.io.Fi ... -
Lucene demo调试运行:
2012-09-01 10:47 2045Lucene demo调试运行: 运行环境: JDK ... -
SSH + Lucene + 分页 + 排序 + 高亮 模拟简单新闻网站搜索引擎
2012-09-01 10:43 3480前两天看到了一个中国新闻网,这个网站的搜索form的a ...
相关推荐
- **Solr Data Import Handler (DIH)**:文件“Solr Data Import 快速入门 - Bory_Chan.htm”可能涵盖了Solr的DIH特性,它是用于从外部数据源(如数据库)导入数据的工具。DIH支持多种数据源,如JDBC(Java ...
solr入门环境搭建,sorl ik分词器分词,solr数据库数据导入,solr同步等技术实现及配置.版本solr7.4.0 + ikanalyzer-solr5 + solr-dataimport-scheduler
Solr是基于Lucene的搜索服务器,它可以快速地处理大量的文本数据并提供高效的搜索服务。Solr支持多种数据类型,包括字符串、数字、日期等,并且允许对数据进行复杂的查询和排序。通过创建索引,Solr能够实现全文搜索...
使用Solr的Data Import Handler (DIH)或SolrJ库来导入数据。DIH可以从数据库或其他数据源导入数据,而SolrJ是Java API,可以直接与Solr服务器交互。具体操作步骤取决于你的数据源和格式。 7. **查询和优化** 在...
Solr配置入门教程主要涉及如何将数据从MySQL数据库和XML文件导入到Solr索引中。以下是详细步骤和相关知识点: 1. **下载与解压Solr**:首先需要从官方源获取Apache Solr的最新版本,并将其解压缩到一个合适的文件夹...
Solr 提供了一个叫做 Data Import Handler (DIH) 的工具,用于从外部数据源导入数据。创建一个数据配置文件(如 `data-config.xml`),定义数据源和映射规则。然后在 Solr 的管理界面中,选择你的核心,使用 "Data ...
接着在“Solr Tutorial”中给出了一些入门示例,包括快速概述,引导新手通过实例学习Solr的基础知识。 在“Solr System Requirements”部分,介绍了运行Solr所必须满足的硬件和软件条件,这是搭建Solr环境前的必要...
Spring CLI示例快速入门 iii. 10.3. 从Spring Boot早期版本升级 iv. 11. 开发你的第一个Spring Boot应用 v. 11.1. 创建POM vi. 11.2. 添加classpath依赖 vii. 11.3. 编写代码 i. 11.3.1. @RestController和@...