
com.weicoder.solr.Solr Maven / Gradle / Ivy
package com.weicoder.solr;
import java.util.Collection;
import java.util.List;
import org.apache.solr.client.solrj.SolrClient;
import org.apache.solr.client.solrj.SolrQuery;
import org.apache.solr.client.solrj.impl.HttpSolrClient.Builder;
import com.weicoder.common.lang.Lists;
import com.weicoder.common.log.Logs;
import com.weicoder.common.util.BeanUtil;
import com.weicoder.common.U;
import com.weicoder.solr.params.SolrParams;
/**
* apache solr client
*
* @author wudi
*/
public class Solr {
// SolrClient
private SolrClient client;
/**
* 构造
*
* @param name
*/
public Solr(String name) {
client = new Builder(SolrParams.getUrl(name)).build();
}
/**
* 更新索引数据
*
* @param list solr数据
* @return 更新数量
*/
public int update(Object... obj) {
return update(Lists.newList(obj));
}
/**
* 更新索引数据
*
* @param list solr数据
* @return 更新数量
*/
public int update(Collection> list) {
try {
return U.E.isEmpty(list) ? 0 : client.addBeans(list).getStatus();
} catch (Exception e) {
Logs.error(e);
return -1;
}
}
/**
* 查询数据
*
* @param
* @param q 查询语句
* @param cls 查询结果类
* @param start 开始
* @param rows 获得行数
* @return 列表
*/
public List query(String q, Class cls, int start, int rows) {
List list = Lists.newList();
try {
client.query(new SolrQuery(q).setStart(start).setRows(rows)).getResults()
.forEach(s -> list.add(BeanUtil.copy(s.getFieldValueMap(), cls)));
} catch (Exception e) {
Logs.error(e);
}
return list;
}
/**
* 删除索引
*
* @param ids 索引对象
* @return
*/
public int del(String... ids) {
return del(Lists.newList(ids));
}
/**
* 删除索引
*
* @param ids 索引对象
* @return
*/
public int del(List ids) {
try {
return U.E.isEmpty(ids) ? 0 : client.deleteById(ids).getStatus();
} catch (Exception e) {
Logs.error(e);
return -1;
}
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy