solr6.3与MySQL结合使用的简明教程(二)
2017-01-17 11:34
519 查看
设置内存
如果要设置solr占用的内存,可以在启动的时候使用 -m 参数做设置。比如solr -m 128m -e dih
就是启动solr,内存大小设置成 128M。单位也可以是g。比如要设置1个G的内存,就运行如下命令:
solr -m 1g -e dih
我们通过浏览器进入 http://localhost:8983/solr ,看如下控制界面:
上面图中红色方框里面的,JVM-Memory一栏是当前solr的内存分配和占用情况。
一张表里查询多个字段
在 前一篇教程里面,我们加了个db2内核。如果用户在系统里面的搜索框内输入一段文字,这段文字即可能是书名,也有可能是书的ISBN号,那么我们应该怎么做呢?找到 solr目录/example/example-DIH/solr/db2/conf/ 文件夹。打开 db-data-config.xml 文件。找到entity标签,更改query属性里面的SQL语句。利用MySQL的concat函数拼接一下两个字段的内容,并为这个新的返回列分配一个新的field。修改后的代码如下:
<dataConfig> <dataSource type="JdbcDataSource" driver="com.mysql.jdbc.Driver" url="jdbc:mysql://127.0.0.1:3306/db1" user="test_user" encoding="UTF-8" password="123456"/> <document> <entity name="jynbook" processor="SqlEntityProcessor" pk="id" query="select c_id,c_name,c_isbn,concat(c_name,' ',c_isbn) zcq from t_book"> <field name="id" column="c_id" /> <field name="name" column="c_name" /> <field name="isbn" column="c_isbn" /> <field name="zcq" column="zcq" /> <!-- zcq是新加的 --> </entity> </document> </dataConfig>
zcq就是我们新加的两字段一块查询的属性。
同时,我们要修改 managed-schema 文件。找到我们在 前一篇教程 里面加入的field标签,在其中再加入一个新的zcq标签。加完后的代码如下,仅仅显示关键代码:
<field name="zcq" type="string" indexed="true" stored="true"/>
重启solr并导入数据,就可以利用 zcq 进行检索了。
多张并列关系的表,导入并查找数据
准备测试用的数据。下面是建立表结构的DDL:CREATE DATABASE `db3` /*!40100 DEFAULT CHARACTER SET utf8 */; use db3; CREATE TABLE `db3`.`tb1` ( `c_id` INT NOT NULL AUTO_INCREMENT, `c_name` VARCHAR(45) NULL, `c_num` INT NULL, PRIMARY KEY (`c_id`)); CREATE TABLE `tb2` ( `c_id` int(11) NOT NULL AUTO_INCREMENT, `c_title` varchar(45) DEFAULT NULL, `c_balance` decimal(9,2) DEFAULT NULL, PRIMARY KEY (`c_id`) ) ENGINE=InnoDB AUTO_INCREMENT=3 DEFAULT CHARSET=utf8;
表tb1和表tb2之间是并列的,没有依赖关系,也没有一对一,一对多,多对多的关系。只是单纯的业务需求,用户点击搜索后既要搜索表tb1,也要搜索tb2。这种场景比较常见,比如说即要搜索相关的博客,又要搜索相关的帖子。把我们原来的db2文件夹复制粘贴并重新命名为db3。并且做以下修改。
db-data-config.xml
<dataConfig> <dataSource type="JdbcDataSource" driver="com.mysql.jdbc.Driver" url="jdbc:mysql://127.0.0.1:3306/db1" user="root" encoding="UTF-8" password="123456"/> <document> <entity name="e0" processor="SqlEntityProcessor" pk="id" query="SELECT c_id,c_name,c_num,concat('tb1_',c_id) tb1_id, concat(c_name,' ', c_num) zcq FROM db3.tb1"> <field name="id" column="tb1_id" /> <field name="displayText" column="c_name" /> <field name="zcq" column="zcq" /> </entity> <entity name="e1" processor="SqlEntityProcessor" pk="id" query="SELECT c_id,c_title,c_balance,concat('tb2_',c_id) tb2_id, concat(c_title,' ',c_balance) zcq FROM db3.tb2"> <field name="id" column="tb2_id" /> <field name="displayText" column="c_title" /> <field name="zcq" column="zcq" /> </entity> </document> </dataConfig>
managed-schema 前后代码省略。
<field name="id" type="string" multiValued="false" indexed="true" required="true" stored="true"/> <field name="displayText" type="string" indexed="true" stored="true"/> <field name="zcq" type="string" indexed="true" stored="true"/> <field name="_version_" type="long" indexed="true" stored="true"/>
solrconfig.xml mysql驱动的jar包路径也要改一下,前后代码省略:
<lib dir="E:/blog/test1/solr-6.3.0/example/example-DIH/solr/db3/lib/" regex="mysql-connector-java-5.1.40.jar" />
推荐你重启solr服务器,并导入数据,就可以搜索了。
系列教程
solr6.3与MySQL结合使用的简明教程(一)solr6.3与MySQL结合使用的简明教程(二)
solr6.3与MySQL结合使用的简明教程(三)——SolrException: undefined field text错误如何解决
solr6.3与MySQL结合使用的简明教程(四)
solr6.3与MySQL结合使用的简明教程(五)——中文分词
相关文章推荐
- solr6.3与MySQL结合使用的简明教程(一)
- solr6.3与MySQL结合使用的简明教程(三)——SolrException: undefined field text错误如何解决
- solr6.3与MySQL结合使用的简明教程(四)
- solr6.3与MySQL结合使用的简明教程(五)——中文分词
- solr6.3与MySQL结合使用
- Solr使用教程-Linux-Java-MySql
- 使用Solr索引MySQL数据
- 使用solr的DIHandler 构建mysql大表全量索引,内存溢出问题的解决方法
- Markdown简明使用教程
- ftp服务结合pam_mysql 使用错误
- MySQL 使用方法简单教程
- mysql 使用教程
- Android开发教程:shape和selector的结合使用
- 如何在Django1.8 结合Python3.4版本中使用MySql
- 如何在Django1.8结合Python3.4版本中使用MySql
- CSDN Markdown简明教程2-基本使用
- 无需转化直接使用ESD映像文件安装系统简明教程
- 安装和使用percona-toolkit来辅助操作MySQL的基本教程
- MySQL日志分析软件mysqlsla的安装和使用教程
- MySql可视化工具MySQL Workbench使用教程