solrj mysql_SolrJ 操作solr增删改查

叁歲伎倆 2022-11-05 15:56 262阅读 0赞

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();

}

发表评论

表情:
评论列表 (有 0 条评论,262人围观)

还没有评论,来说两句吧...

相关阅读