<dependency>
<groupId>org.apache.solr</groupId>
<artifactId>solr-solrj</artifactId>
<version>6.4.2</version>
</dependency>
package com.jcbase.solr.client.vo;
import java.sql.Timestamp;
import org.apache.solr.client.solrj.beans.Field;
public class Person{
@Field("id")
private String id;
@Field("money")
private int number;
@Field("name")
private String name;
@Field("content")
private String content;
@Field("updatetime")
private Timestamp updateTime;
@Override
public String toString() {
return "Person [id=" + id + ", content="+content+", number=" + number + ", name=" + name + ", updateTime=" + updateTime + "]";
}
public Person(){}
public Person(String id, int number, String name, String content, Timestamp updateTime) {
this.id = id;
this.number = number;
this.name = name;
this.content = content;
this.updateTime = updateTime;
}
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public int getNumber() {
return number;
}
public void setNumber(int number) {
this.number = number;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public Timestamp getUpdateTime() {
return updateTime;
}
public void setUpdateTime(Timestamp updateTime) {
this.updateTime = updateTime;
}
public String getContent() {
return content;
}
public void setContent(String content) {
this.content = content;
}
}
package com.jcbase.solr.client;
import java.lang.reflect.Method;
import java.sql.Timestamp;
import java.util.Random;
import com.jcbase.solr.client.vo.Person;
import org.apache.solr.client.solrj.SolrQuery;
import org.apache.solr.client.solrj.impl.HttpSolrClient;
import org.apache.solr.client.solrj.response.QueryResponse;
import org.apache.solr.common.SolrInputDocument;
@SuppressWarnings("deprecation")
public class SolrClient {
private static HttpSolrClient solrServer;
public static String[] docs = {"Solr是一個(gè)獨(dú)立的企業(yè)級(jí)搜索應(yīng)用服務(wù)器",
"它對(duì)外提供類似于Web-service的API接口",
"用戶可以通過(guò)http請(qǐng)求",
"向搜索引擎服務(wù)器提交一定格式的XML文件生成索引",
"也可以通過(guò)Http Get操作提出查找請(qǐng)求",
"并得到XML格式的返回結(jié)果"};
public static String[] name = {"王珣",
"wangxun",
"愛(ài)誰(shuí)誰(shuí)",
"ass",
"haoxin",
"tiantian"};
static {
//注意請(qǐng)求地址格式:瀏覽器中的地址有 ‘#’翔脱,需要把‘#’去掉!
solrServer = new HttpSolrClient("http://localhost:8983/solr/mycollect");
solrServer.setConnectionTimeout(5000);
}
/**
* 添加單個(gè)文檔
*/
public static void insert(Person person) {
SolrInputDocument doc = new SolrInputDocument();
doc.addField("id", person.getId());
doc.addField("name", person.getName());
doc.addField("money", person.getNumber());
doc.addField("updateTime", person.getUpdateTime());
doc.addField("content",person.getContent());
try {
solrServer.add(doc);
solrServer.commit();
} catch (Exception e) {
e.printStackTrace();
}
}
/**
* 根據(jù)文檔id刪除文檔 利诺。
*/
public static void deleteById(String id) {
try {
solrServer.deleteById(id+"");
solrServer.commit();
} catch (Exception e) {
e.printStackTrace();
}
}
/**
* 刪除所有文檔遵岩,為安全起見(jiàn),使用時(shí)再解注函數(shù)體 眷细。
*/
public static void deleteAll() {
try {
solrServer.deleteByQuery("*:*");
solrServer.commit();
} catch (Exception e) {
e.printStackTrace();
}
}
/**
* 更新文檔拦盹,其實(shí)也是通過(guò)insert操作來(lái)完成 。
*
*/
public static void update(Person person) {
insert(person);
}
/**
* 根據(jù)文檔id查詢單個(gè)文檔 溪椎。
* @return
*/
public static <T> T getById(int id, Class<T> clazz) {
SolrQuery query = new SolrQuery();
query.setQuery("id:" + id);
try {
QueryResponse rsp = solrServer.query(query);
return rsp.getBeans(clazz).get(0);
} catch (Exception e) {
e.printStackTrace();
}
return null;
}
/**
* @param obj 對(duì)象索引
* @param idName 主鍵名稱
*/
public static void deleteByObject(Object obj, String idName){
try {
Class<?> clazz = obj.getClass();
//將idName的首字母變成大寫(xiě)
if(Character.isLowerCase(idName.charAt(0))) idName = Character.toUpperCase(idName.charAt(0)) + idName.substring(1);
Method method = clazz.getMethod("get"+idName);
String idValue = (String) method.invoke(obj);
deleteById(idValue);
} catch (Exception e) {
e.printStackTrace();
}
}
public static void main(String[] args){
int nameLength = name.length;
for (int i = 10; i < 100; i++) {
Random random = new Random();
StringBuffer nameBuf = new StringBuffer(name[random.nextInt(nameLength)]);
StringBuffer docBuf = new StringBuffer(docs[random.nextInt(nameLength)]);
Person person = new Person( String.valueOf(i), random.nextInt(100000), nameBuf.append(String.valueOf(i)).toString(),docBuf.toString(), new Timestamp(System.currentTimeMillis()));
insert(person);
}
//Solr.update(person);
//System.out.println(Solr.getById(123, Person.class));
//deleteByObject(person, "id");
}
}
最后編輯于 :
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者