solrj操控sorl,增删改查
来源:互联网 发布:免费hifi播放软件 编辑:程序博客网 时间:2024/06/08 02:03
maven
<dependency> <groupId>org.apache.solr</groupId> <artifactId>solr-solrj</artifactId> <version>4.10.4</version> </dependency> <!-- https://mvnrepository.com/artifact/commons-logging/commons-logging --> <dependency> <groupId>commons-logging</groupId> <artifactId>commons-logging</artifactId> <version>1.1.1</version> </dependency>
增加的大体思路
- 第一,准备好一个sorl项目并启动,得到一个sorl的url。
- 第二,导入的jar包中得到sorl的客户端对象HttpSolrServer
- 第三,new一个doc对象,添加到HttpSolrServer
- 第四,提交
package lucene01;import java.io.File;import java.io.StringReader;import org.apache.lucene.analysis.Analyzer;import org.apache.lucene.analysis.TokenStream;import org.apache.lucene.analysis.tokenattributes.CharTermAttribute;import org.apache.lucene.analysis.tokenattributes.OffsetAttribute;import org.apache.lucene.document.Document;import org.apache.lucene.index.DirectoryReader;import org.apache.lucene.index.IndexReader;import org.apache.lucene.index.Term;import org.apache.lucene.search.IndexSearcher;import org.apache.lucene.search.Query;import org.apache.lucene.search.ScoreDoc;import org.apache.lucene.search.TermQuery;import org.apache.lucene.search.TopDocs;import org.apache.lucene.store.Directory;import org.apache.lucene.store.FSDirectory;import org.apache.solr.client.solrj.impl.HttpSolrServer;import org.apache.solr.common.SolrInputDocument;import org.junit.Test;import org.wltea.analyzer.lucene.IKAnalyzer;public class FirstDemo2 { // 创建索引 @Test public void testSearch() throws Exception { String baseURL="http://localhost:8081/solr/collection1"; HttpSolrServer httpSolrServer = new HttpSolrServer(baseURL); SolrInputDocument doc = new SolrInputDocument(); doc.addField("id", "liuzhonghua"); doc.addField("name", "刘中华"); httpSolrServer.add(doc); httpSolrServer.commit(); }}
删除大体思路
得到连接,根据条件删除,后面是时间(条件也可以是*:* 表示全部)
@Test public void testSearch2() throws Exception { String baseURL="http://localhost:8081/solr/collection1"; HttpSolrServer httpSolrServer = new HttpSolrServer(baseURL); httpSolrServer.deleteByQuery("name:刘中华", 100); }
查询大体思路
@Test public void testSearch3() throws Exception { String baseURL="http://localhost:8081/solr/collection1"; HttpSolrServer httpSolrServer = new HttpSolrServer(baseURL); //new 一个查询对象 SolrQuery solrQuery = new SolrQuery(); //向查询对象里面增加条件 (增加基本的查询条件,想当于 solrQuery.set("q","name:刘中华");) solrQuery.setQuery("name:刘中华"); //增加过滤条件// solrQuery.set("fq","desc:程序员"); //价格排序// solrQuery.addSort("price",ORDER.desc); //分页 solrQuery.setStart(0); solrQuery.setRows(5); //高亮,默认域 solrQuery.set("df", "name"); //指定只查询某个域 solrQuery.set("fl", "id,name"); //高亮显示,开启高亮 solrQuery.setHighlight(true); //指定高亮域 solrQuery.addHighlightField("name"); //指定前缀,后缀 solrQuery.setHighlightSimplePre("<span style='color:red'>"); solrQuery.setHighlightSimplePost("</span>"); //执行查询,得到结果集,同时也得到高亮部分的结果集 QueryResponse query = httpSolrServer.query(solrQuery); SolrDocumentList doc = query.getResults(); Map<String, Map<String, List<String>>> highlighting = query.getHighlighting(); //遍历 System.out.println(doc.getNumFound()); for(SolrDocument d : doc){ System.out.println(d.get("name")); System.out.println(d.get("id")); System.out.println("-----------------"); Map<String, List<String>> map = highlighting.get(d.get("id")); List<String> list = map.get("name"); System.out.println(list.get(0)); } }
阅读全文