使用solrj和EasyNet.Solr进行原子更新
2012-12-08 23:07
681 查看
Solr 4.0(http://lucene.apache.org/solr/)已经发布了有一段时间了,其中Solr 4.0中有一个不错的特性:Atom Update,也就是原子更新。有了原子更新这个东东,我们就可以只更新某个字段。下面的代码演示了如何用solrj和EasyNet.Solr(http://easynet.codeplex.com)进行原子更新。
使用solrj进行原子更新:
使用EasyNet.Solr进行原子更新:
希望对大家有所帮助,也希望大家关注和使用EasyNet.Solr,如有任何关于Solr、Lucene、EasyNet.Solr等等问题,都可以加入EasyNet开源项目QQ群:181963043。
使用solrj进行原子更新:
import org.apache.solr.client.solrj.impl.ConcurrentUpdateSolrServer import org.apache.solr.common.SolrInputDocument object SolrTest extends App { val url = "http://localhost:8080/example/collection1" val server = new ConcurrentUpdateSolrServer(url, 100, 3) //init //atomSet atomAdd def init = { val doc = new SolrInputDocument() doc.addField("id", "F8V7067-APL-KIT") doc.addField("name", "Belkin Mobile Power Cord for iPod w/ Dock") doc.addField("features", "car power adapter") doc.addField("features", "white") server.add(doc) server.commit() server.shutdown() } def atomSet = { val doc = new SolrInputDocument() doc.addField("id", "F8V7067-APL-KIT") val setOper = new java.util.HashMap[String, String]() setOper.put("set", "iPod & iPod Mini USB 2.0 Cable") doc.addField("name", setOper) server.add(doc) server.commit() server.shutdown() } def atomAdd = { val doc = new SolrInputDocument() doc.addField("id", "F8V7067-APL-KIT") val addOper = new java.util.HashMap[String, String]() addOper.put("add", "add a test feature") doc.addField("features", addOper) server.add(doc) server.commit() server.shutdown() } }
使用EasyNet.Solr进行原子更新:
using EasyNet.Solr.Commons; using EasyNet.Solr.Impl; using System; using System.Collections; using System.Collections.Generic; using System.Web.Mvc; namespace EasyNet.Solr.Website.Controllers { public class IndexController : Controller { private OptimizeOptions optimizeOptions = new OptimizeOptions(); private ISolrResponseParser<NamedList, ResponseHeader> binaryResponseHeaderParser = new BinaryResponseHeaderParser(); private IUpdateParametersConvert<NamedList> updateParametersConvert = new BinaryUpdateParametersConvert(); private ISolrUpdateConnection<NamedList, NamedList> solrUpdateConnection = new SolrUpdateConnection<NamedList, NamedList>() { ServerUrl = "http://localhost:8080/example/collection1", ContentType = "application/javabin" }; private ISolrUpdateOperations<NamedList> updateOperations; public IndexController() { updateOperations = new SolrUpdateOperations<NamedList, NamedList>("/update", solrUpdateConnection, updateParametersConvert) { ResponseWriter = "javabin" }; } // // GET: /Index/ public ActionResult Index() { //Init(); //AtomSet(); AtomAdd(); return View(); } private void Init() { var docs = new List<SolrInputDocument>(); var doc = new SolrInputDocument(); doc.Add("id", new SolrInputField("id", "F8V7067-APL-KIT")); doc.Add("name", new SolrInputField("name", "Belkin Mobile Power Cord for iPod w/ Dock")); doc.Add("features", new SolrInputField("features", new String[] { "car power adapter", "white" })); docs.Add(doc); var result = updateOperations.Update(new UpdateOptions() { OptimizeOptions = optimizeOptions, Docs = docs }); var header = binaryResponseHeaderParser.Parse(result); Response.Write(string.Format("Update Status:{0} QTime:{1}</br>", header.Status, header.QTime)); } private void AtomSet() { var docs = new List<SolrInputDocument>(); var doc = new SolrInputDocument(); doc.Add("id", new SolrInputField("id", "F8V7067-APL-KIT")); var setOper = new Hashtable(); setOper.Add("set", "iPod & iPod Mini USB 2.0 Cable"); doc.Add("name", new SolrInputField("name", setOper)); docs.Add(doc); var result = updateOperations.Update(new UpdateOptions() { OptimizeOptions = optimizeOptions, Docs = docs }); var header = binaryResponseHeaderParser.Parse(result); Response.Write(string.Format("Update Status:{0} QTime:{1}</br>", header.Status, header.QTime)); } private void AtomAdd() { var docs = new List<SolrInputDocument>(); var doc = new SolrInputDocument(); doc.Add("id", new SolrInputField("id", "F8V7067-APL-KIT")); var addOper = new Hashtable(); addOper.Add("add", "add a test feature "); doc.Add("features", new SolrInputField("features", addOper)); docs.Add(doc); var result = updateOperations.Update(new UpdateOptions() { OptimizeOptions = optimizeOptions, Docs = docs }); var header = binaryResponseHeaderParser.Parse(result); Response.Write(string.Format("Update Status:{0} QTime:{1}</br>", header.Status, header.QTime)); } } }
希望对大家有所帮助,也希望大家关注和使用EasyNet.Solr,如有任何关于Solr、Lucene、EasyNet.Solr等等问题,都可以加入EasyNet开源项目QQ群:181963043。
相关文章推荐
- 使用solrj和EasyNet.Solr进行原子更新
- 使用solrj和EasyNet.Solr进行原子更新
- solr入门之使用SolrJ进行安全认证和权限管理
- solr/solrj原子更新
- 一步一步教你使用AgileEAS.NET基础类库进行应用开发-基础篇-演示ORM的批量删除与更新
- 了解使用 ASP.NET AJAX 进行局部页面更新
- 关于asp.net网站发布后,使用登录控件和注册控件时出现“数据库只读,无法进行数据更新”的解决方法
- solr4.9原子更新solrj例子
- asp.net ajax 使用updatepanel进行更新后的提示
- asp.net ajax 使用updatepanel进行更新后的提示
- asp.netajax使用updatepanel进行更新后的提示
- asp.net ajax 使用updatepanel进行更新后的提示
- 【EntityFramework系列教程六,翻译】在ASP.NET MVC程序中使用EntityFramework对相关数据进行更新
- 了解使用 ASP.NET AJAX 进行局部页面更新(一)
- Win下solr5.3使用SolrJ进行CRUD操作
- 【转】了解使用 ASP.NET AJAX 进行局部页面更新
- solr/solrj之原子更新
- solr4.9原子更新solrj例子
- asp.net ajax 使用updatepanel进行更新后的提示
- 【转】【Asp.Net】了解使用 ASP.NET AJAX 进行局部页面更新