3.跟我学solr---使用solrj加入索引
2024-09-14 05:40:51
上一章讲了怎么使用solr admin向solrserver加入索引,Solr 是一个独立的企业级搜索应用server。它对外提供类似于 Web-service 的 API 接口。
用户能够通过 http请求,向搜索引擎server提交一定格式的 XML 文件,生成索引。也能够通过 Http
Get 操作提出查找请求,并得到XML 格式的返回结果。
所以我们能够使用httpClient作为client向solrserver加入索引。可是幸运的是,solr为我们提供专门的clientjar包。solrj,我们能够使用该jar包向solrserver提交索引。
首先我们导入相关的包,相关的jar包能够通过下载的solr的压缩包中获取,当中包含:
1.dist/solrj-lib
2.dist/solr-solrj-*.jar
把这些jar包导入到classpath中,我们就能够開始使用solrj了。
HttpSolrServer
HttpSolrServer是用于连接solrserver的类,它的底层实现是依赖apache 的 httpclient 的,以下是连接server的详细代码:
String url = "http://localhost:8080/solr";
HttpSolrServer server = new HttpSolrServer(url);
server.setMaxRetries(1); // defaults to 0. > 1 not recommended.
server.setConnectionTimeout(5000); // 5 seconds to establish TCP
// Setting the XML response parser is only required for cross
// version compatibility and only when one side is 1.4.1 or
// earlier and the other side is 3.1 or later.
server.setParser(new XMLResponseParser()); // binary parser is used by
// default
// The following settings are provided here for completeness.
// They will not normally be required, and should only be used
// after consulting javadocs to know whether they are truly required.
server.setSoTimeout(1000); // socket read timeout
server.setDefaultMaxConnectionsPerHost(100);
server.setMaxTotalConnections(100);
server.setFollowRedirects(false); // defaults to false
// allowCompression defaults to false.
// Server side must support gzip or deflate for this to have any effect.
server.setAllowCompression(true);
EmbeddedSolrServer
另外。solrj提供第二种不通过http连接solr的方式。直接通过在本地訪问文件的方式连接solr服务。
// Note that the following property could be set through JVM level arguments too
System.setProperty("solr.solr.home", "/home/shalinsmangar/work/oss/branch-1.3/example/solr");
CoreContainer.Initializer initializer = new CoreContainer.Initializer();
CoreContainer coreContainer = initializer.initialize();
EmbeddedSolrServer server = new EmbeddedSolrServer(coreContainer, "");
假设使用了多个core。能够通过以下的方式。
File home = new File( "/path/to/solr/home" );
File f = new File( home, "solr.xml" );
CoreContainer container = new CoreContainer();
container.load( "/path/to/solr/home", f ); EmbeddedSolrServer server = new EmbeddedSolrServer( container, "core name as defined in solr.xml" );
向solrserver加入数据
连接成功后。我们能够使用server进行数据的提交。
SolrInputDocument doc1 = new SolrInputDocument();
doc1.addField( "id", "333333333333333", 1.0f );
doc1.addField( "name", "3333333333333333333", 1.0f );
doc1.addField( "price", 10 );
server.add(doc1);
server.commit();
提交成功后。能够通过solr admin查看索引是否添加了,可是最简单的方式就是调用查询方法,查询一下。
SolrQuery solrQuery = new SolrQuery();
solrQuery.setQuery("q=3333333333333333333");
QueryResponse queryResponse= server.query(solrQuery);
System.out.println(queryResponse.getResults().get(0).getFieldValue("name"));
向solr服务加入pojo的数据
首先我们须要新建一个java bean。
public class Item { @Field
private String id; @Field
private String category; @Field
private List<String> features; public String getId() {
return id;
} public void setId(String id) {
this.id = id;
} public String getCategory() {
return category;
} public void setCategory(String category) {
this.category = category;
} public List<String> getFeatures() {
return features;
} public void setFeatures(List<String> features) {
this.features = features;
} }
向solr加入数据。
Item item = new Item();
item.setId("201404300001");
item.setCategory("category");
item.setFeatures(Arrays.asList("feature1","feature2","feature3"));
server.addBean(item);
server.commit();
搜索一下,验证是否加入成功。
SolrQuery solrQuery = new SolrQuery();
solrQuery.setQuery("q=feature1");
QueryResponse queryResponse= server.query(solrQuery);
List<Item> items = queryResponse.getBeans(Item.class);
System.out.println(items.get(0).getCategory());
最新文章
- C#开发微信门户及应用(14)-在微信菜单中采用重定向获取用户数据
- 优化Web中的性能
- 尽量用goto代替尾递归
- LINK1123:failure during conversion to COFF:file invalid or corrupt
- 【转】使用Sublime + PlantUML高效地画图
- hdu 4635 Strongly connected 强连通缩点
- js部分---函数与递归;
- poj 2192 (DP)
- Matlab之文件读写
- SGU 441 Set Division(矩阵快速幂)
- Rails常用命令
- Android 图片三级缓存之内存缓存(告别软引用(SoftRefrerence)和弱引用(WeakReference))
- https WebAPi
- ActiveX控件打包成Cab置于网页中自动下载安装(转载)
- PHP文本路径转换为链接文字
- Yoink Mac版(临时文件存储助手)中文版
- Windows server 安装 OpenSSH
- 【论文笔记】Dynamic Routing Between Capsules
- SQLSERVER最简单的同名数据库恢复过程.
- 20180925 SQL Server游标使用