solr 学习,
solr 学习笔记:
ALTER TABLE `movikr_contents`.`cinema` ADD COLUMN `name_quanpin_c` varchar(128) DEFAULT '' COMMENT '全拼不带空格' AFTER `goods_exchange_type`, ADD COLUMN `name_jianpin_c` varchar(128) DEFAULT '' COMMENT '简拼不带空格' AFTER `name_quanpin_c`;
update cinema set name_jianpin_c =REPLACE(`name_jianpin`,' ','');
update cinema set name_quanpin_c =REPLACE(`name_quanpin`,' ','');
./bin/solr start -e cloud -noprompt
./bin/post -c gettingstarted /Users/sunzn/Desktop/活动文档
./bin/solr -e dih
5.6.24
solr.DataImportHandler
<dataSource driver="com.mysql.jdbc.Driver" url="jdbc:mysql://172.16.30.52:3306/movikr_contents?useUnicode=true&characterEncoding=UTF-8&allowMultiQueries=true&zeroDateTimeBehavior=convertToNull" user="mapollo" password="mapollo"/>
<field name="id" type="long" indexed="true" stored="true" required="true" multiValued="false" />
<field name="name" type="string" indexed="true" stored="true"/>
<field name="longitude" type="string" indexed="true" stored="true" multiValued="true"/>
<field name="latitude" type="string" indexed="true" stored="true" multiValued="true"/>
<field name="name_quanpin" type="string" indexed="true" stored="true" multiValued="true"/>
<field name="name_jianpin" type="string" indexed="true" stored="true" multiValued="true"/>
倒入数据:
./bin/solr -e dih
http://localhost:8983/solr/myproducts/dataimport2?command=delta-import
查询数据
./bin/solr start -e cloud -noprompt
./bin/post -c gettingstarted /Users/sunzn/Desktop/活动文档
增加字段需要删除 managed-schema
并且重新启动。
*:*
bin/solr stop -all ; rm -Rf example/cloud/
4903
4867
固安
{!geofilt}
geodist() asc
39.43714,116.297
store
60
按照拼音汉字搜索结果如何做到智能?
倒入数据,哪些数据没有倒入进去?
客户端 调用查询方法
perform queries or index documents.
delete, commit, and optimize.
https://cwiki.apache.org/confluence/display/solr/Response+Writers
http://wiki.apache.org/solr/SolJava
solr java
<dependency>
<groupId>org.apache.solr</groupId>
<artifactId>solr-solrj</artifactId>
<version>6.1.0</version>
</dependency>
package com.movikr.svc.util;
import com.alibaba.dubbo.common.utils.CollectionUtils;
import org.apache.solr.client.solrj.SolrClient;
import org.apache.solr.client.solrj.SolrQuery;
import org.apache.solr.client.solrj.impl.HttpSolrClient;
import org.apache.solr.client.solrj.impl.XMLResponseParser;
import org.apache.solr.client.solrj.response.QueryResponse;
import org.apache.solr.client.solrj.response.UpdateResponse;
import org.apache.solr.common.SolrDocument;
import org.apache.solr.common.SolrDocumentList;
import org.apache.solr.common.SolrInputDocument;
/**
* Created by sunzhinan on 16/6/21.
*/
public class UtilSolr {
public static HttpSolrClient getHttpClient(){
String urlString = "http://localhost:8983/solr/techproducts";
HttpSolrClient solr = new HttpSolrClient.Builder(urlString).build();
// solr.setParser(new XMLResponseParser());
return solr;
}
// public static HttpSolrClient getCloudClient(){
// String urlString = "http://localhost:8983/solr/gettingstarted";
// HttpSolrClient solr = new HttpSolrClient.Builder(urlString).build();
// //solr.setParser(new XMLResponseParser());
// return solr;
// }
public static void main(String[] args) throws Exception{
//addtest();
querytest();
}
public static void addtest()throws Exception{
SolrClient client=getHttpClient();
SolrInputDocument document = new SolrInputDocument();
document.addField("id", "552199");
document.addField("store","39.43714,116.297");
document.addField("latitude","39.43714");
document.addField("longitude","116.297");
document.addField("name", "北京国际影院");
document.addField("pinyin", "北京国际影院");
UpdateResponse response = client.add(document);
client.commit();
}
public static void querytest() throws Exception{
SolrClient client=getHttpClient();
//查询 -------
SolrQuery query = new SolrQuery();
//query.setQuery(mQueryString);
//query.setRequestHandler("/select");
//简拼
//query.set("q","pinyin:bj");
//全拼
//query.set("q","pinyin:bj");
//汉字分词
//query.set("q","固安 国际");
//经纬度
query.set("q","pinyin:beijing");
query.set("fq","{!geofilt}");
query.set("sort","geodist() asc");
query.set("pt", "39.43714,116.297");
query.set("sfield", "store");
query.set("d", "10");
QueryResponse response = client.query(query);
SolrDocumentList list = response.getResults();
String str=list.toString();
System.out.println(str);
if(CollectionUtils.isNotEmpty(list)){
for(SolrDocument document:list){
System.out.println(document.get("name"));
}
}
//查询end -------
}
}