java -jar post.jar solr.xml monitor.xml
monitor数据
4 测试说明:我们使用name=3007WFP条件查询数据,得到结果如上图所示。
二 使用solrJ配置数据源
1 环境String url = "http://192.168.22.216:8983/solr"; HttpSolrServer server = new HttpSolrServer(url); server.setSoTimeout(3000); // socket read timeout server.setConnectionTimeout(1000); server.setDefaultMaxConnectionsPerHost(1000); server.setMaxTotalConnections(10); server.setFollowRedirects(false); // defaults to false server.setAllowCompression(true); server.setMaxRetries(1); //构造document1 SolrInputDocument doc1 = new SolrInputDocument(); doc1.addField( "id", "id1", 1.0f ); doc1.addField( "name", "doc1", 1.0f ); doc1.addField( "price", 10 ); //构造document2 SolrInputDocument doc2 = new SolrInputDocument(); doc2.addField( "id", "id2", 1.0f ); doc2.addField( "name", "doc2", 1.0f ); doc2.addField( "price", 20 ); //构造document集合 Collection<SolrInputDocument> docs = new ArrayList<SolrInputDocument>(); docs.add(doc1); docs.add(doc2); //将documents提交给solr try { server.add(docs); } catch (SolrServerException e1) { e1.printStackTrace(); } catch (IOException e1) { e1.printStackTrace(); } //提交一个commit(方法一) try { server.commit(); } catch (SolrServerException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); }
4 测试
说明:
可以看到,我们使用name=doc1的查询条件将第一条记录查询出来了。
三 使用配置文件配置数据源SET FOREIGN_KEY_CHECKS=0; -- ---------------------------- -- Table structure for `user` -- ---------------------------- DROP TABLE IF EXISTS `user`; CREATE TABLE `user` ( `id` int(11) NOT NULL AUTO_INCREMENT, `userName` varchar(50) DEFAULT NULL, `userAge` int(11) DEFAULT NULL, `userAddress` varchar(200) DEFAULT NULL, PRIMARY KEY (`id`) ) ENGINE=InnoDB AUTO_INCREMENT=6 DEFAULT CHARSET=utf8; -- ---------------------------- -- Records of user -- ---------------------------- INSERT INTO `user` VALUES ('1', 'test1', '11', 'suzhou');
INSERT INTO `user` VALUES ('2', 'test2', '22', 'shanghai'); INSERT INTO `user` VALUES ('3', 'test3', '33', 'guangzhou');
INSERT INTO `user` VALUES ('4', 'test4', '44', 'shenzhen'); INSERT INTO `user` VALUES ('5', 'test5', '55', 'beijing');
数据库截图:
2> 配置数据来源
根据/usr/local/solr-4.7.2/example/solr/collection1/conf/目录,找到solr-config.xml配置文件,在 <requestHandler<span style="white-space:pre"> </span><requestHandler name="/dataimport"class="org.apache.solr.handler.dataimport.DataImportHandler"> <lst name="defaults"> <str name="config">data-config.xml</str> </lst> </requestHandler>
如下图所示:
<?xml version="1.0" encoding="UTF-8"?> <dataConfig> <dataSource type="JdbcDataSource" driver="com.mysql.jdbc.Driver" url="jdbc:mysql://192.168.21.20:3306/jfinal_demo" user="root" password="123456" batchSize="-1" /> <document name="testDoc"> <entity name="user" pk="id" query="select * from user"> <field column="id" name="id"/> <field column="userName" name="userName"/> <field column="userAge" name="userAge"/> <field column="userAddress" name="userAddress"/> </entity> </document> </dataConfig>
如下图所示:
说明:<span style="white-space:pre"> </span><field name="userName" type="text_general" indexed="true" stored="true" /> <field name="userAge" type="int" indexed="true" stored="true" /> <field name="userAddress" type="text_general" indexed="true" stored="true" />
如下图所示:
(4) 设置唯一主键: <uniqueKey>id</uniqueKey>
注意:solr服务中的索引的主键默认只支持type="String",解决办法:修改同目录下的elevate.xml,注释掉下面2行。
如图所示:
5> 配置jar包
拷贝mysql-connector-java-5.1.22-bin.jar和solr-dataimporthandler-4.10.3.jar到/usr/local/solr-4.7.2\example\solr-webapp\webapp\WEB-INF\lib。一个是mysql的java驱动,另一个在/usr/local/solr-4.7.2\dist目录里,是org.apache.solr.handler.dataimport.DataImportHandler所在的jar。