写完文章后对Solr不是有一个很清晰的认识,所以问了一下同事,实际开发中的solr是怎样的。下面从京东商城举个例子来记录下。
打开京东商城,输入“零食”两个字,会展示出如下内容:
会查询的各种各样的零食,为什么会这么快就查询出来呢?
如果直接查询数据库,使用LIKE的操作,那该多久才查出来。其实这里使用到了类似于solr的技术。
可以这样去思考,如下图:
在用户上传商品的时候,会上传图片,标题内容,详细内容等。可以看成是如下格式:
public class Prudct{ private String imageUrl; private String title; private String content; setter ... gettter... }
用户上传商品的时候,会先把内容解析,并插入数据库(MySQL或Oracle等);
此时还要插入Solr,并生成索引。插入之前要在scheme.xml里添加上面的字段:
然后使用代码添加到solr,使用方法addField:
// 1、获取solr的服务器 用于连接solr项目 SolrServer solrServer = new HttpSolrServer("http://localhost:8080/solr/collection1"); // 2、执行solrServer的添加方法 SolrInputDocument doc = new SolrInputDocument(); doc.addField("imageUrl", "https://item.jd.com/3924063.html"); doc.addField("title", "京东超市良品铺子高端零食 鸭肉大礼.。。。。。; doc.addField("content", "鸭脖鸭掌肉类零食大礼包一整箱490g*1 【限时下单立减10元】【吃货节狂欢专场】【进店抢爆款第2件1元】戳我抢!抢!抢!。。。。。。"); solrServer.add(doc); solrServer.commit();
这样就添加到了solr,下次用户查询“零食”的时候,会直接访问solr,直接就能快速获取到了零食的相关内容了。