solrj mysql_SolrJ 操作solr增删改查
Solr的特性包括:
• 高级的全文搜索功能
• 专为高通量的网络流量进行的优化
• 基于开放接口(XML和HTTP)的标准
• 综合的HTML管理界面
• 可伸缩性-能够有效地复制到另外一个Solr搜索服务器
• 使用XML配置达到灵活性和适配性
• 可扩展的插件体系
//分页查询
//创建SolrServer对象,要对solr
HttpSolrServer server = new HttpSolrServer(url);
//连接solr服务器超时时间 单位毫秒
server.setConnectionTimeout(timeout);
//是否允许跟踪重定向 默认false
server.setFollowRedirects(followRedirects);
//是否允许压缩
server.setAllowCompression(allowCompression);
//最大重新连接次数
server.setMaxRetries(maxRetries);
//创建查询对象
SolrQuery query = communitySolrHandler.createQuery(pagination);
public SolrQuery createQuery(Pagination pagination){
SolrQuery query = new SolrQuery();
CommunitySolrField k = pagination.getDto();
String value = k.getShortPy();
StringBuilder sb = new StringBuilder();
//拼接查询条件
if (!CollectionUtils.isEmpty(k.getRegionIds())){
for (String regionId:k.getRegionIds()){
sb.append(“ regionId:”+regionId);
}
}
if (!CollectionUtils.isEmpty(k.getProjectIds())){
for (String projectId:k.getProjectIds()){
sb.append(“ projectId:”+projectId);
}
}
query.setQuery(sb.toString());
//在满足上面条件之外 过滤下面的条件
if (StringUtils.hasText(value)){
if (ToolUtils.matcherZh(value)){
query.addFilterQuery(“ communityName:”+value);
}else {
query.addFilterQuery(“shortPiny:”+value.toLowerCase()+”*“ );
}
}
//分页返回结果
int start = ToolUtils.start(pagination.getPageNo(), pagination.getPageSize()) ;
// 从第几条开始查询
query.setStart(start);
query.setRows(pagination.getPageSize());
return query;
}
//更新索引 一般这段代码是用定时任务来跑得
ConcurrentUpdateSolrServer server = new ConcurrentUpdateSolrServer(solrJSearchClient.getUrl()+ SolrTable.community.toString(), solrJSearchClient.getQueueSize(), solrJSearchClient.getThreadCount());
List list = communityDao.findAllCommunitySolr() ;
if (CollectionUtils.isEmpty(list)) {
return;
}
List ids = new ArrayList();
List docs = new ArrayList();
SolrInputDocument doc;
HanZi hanZi;
for (CommunityDto communityDto:list){
doc = new SolrInputDocument();
hanZi = new HanZi(communityDto.getName());
doc.addField(“id”,communityDto.getId());
doc.addField(“communityName”,communityDto.getName());
doc.addField(“piny”,communityDto.getPiny());
doc.addField(“shortPiny”,hanZi.getPinYinHeadChar());
doc.addField(“sortDefault”,communityDto.getSortDefault());
doc.addField(“regionId”,communityDto.getDicRegionId());
doc.addField(“projectId”,communityDto.getProjectId());
docs.add(doc);
ids.add(communityDto.getId());
}
try {
//先删除
server.deleteById(ids);
server.commit();
//再添加/更新索引
server.add(docs);
//对索引进行优化
server.optimize();
server.commit();
} catch (Exception e) {
e.printStackTrace();
}
还没有评论,来说两句吧...