作者:xljlg | 来源:互联网 | 2023-05-19 02:02
1、首先介绍一下solr查询,各关键字代表的意思参数描述示例qSolr中用来搜索的查询。有关该语法的完整描述,请参阅参考资料中的“LuceneQueryParserSyntax”。可以通过
1、首先介绍一下solr查询,各关键字代表的意思
参数 |
描述 |
示例 |
q |
Solr 中用来搜索的查询。有关该语法的完整描述,请参阅 参考资料 中的 “Lucene QueryParser Syntax”。可以通过追加一个分号和已索引且未进行断词的字段(下面会进行解释)的名称来包含排序信息。默认的排序是 score desc,指按记分降序排序。 |
q=myField:Java AND otherField:developerWorks; date asc 此查询搜索指定的两个字段并根据一个日期字段对结果进行排序。 |
start |
将初始偏移量指定到结果集中。可用于对结果进行分页。默认值为 0。 |
start=15 返回从第 15 个结果开始的结果。 |
rows |
返回文档的最大数目。默认值为 10。 |
rows=25 |
fq |
提供一个可选的筛选器查询。查询结果被限制为仅搜索筛选器查询返回的结果。筛选过的查询由 Solr 进行缓存。它们对提高复杂查询的速度非常有用。 |
任何可以用 q 参数传递的有效查询,排序信息除外。 |
hl |
当 hl=true 时,在查询响应中醒目显示片段。默认为 false。参看醒目显示参数上的 Solr Wiki 部分可以查看更多选项(见 参考资料)。 |
hl=true |
fl |
作为逗号分隔的列表指定文档结果中应返回的 Field 集。默认为 “*”,指所有的字段。“score” 指还应返回记分。 |
*,score
|
2、solr链接参数
solr.url=http://ip:port/solrname
solr.maxRetries=1
solr.cOnnectionTimeout=500
3、solr与spring集成
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:p="http://www.springframework.org/schema/p"
xmlns:cOntext="http://www.springframework.org/schema/context"
xmlns:mvc="http://www.springframework.org/schema/mvc"
xsi:schemaLocation="
http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.2.xsd
http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-3.2.xsd
http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.2.xsd">
4、测试类
package com.vip.search.test;
import java.util.Iterator;
import java.util.Set;
import org.apache.solr.client.solrj.SolrQuery;
import org.apache.solr.client.solrj.impl.HttpSolrServer;
import org.apache.solr.client.solrj.response.QueryResponse;
import org.apache.solr.common.SolrDocumentList;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.test.context.ContextConfiguration;
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
//junit进行启动spring的相关配置
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(locatiOns= {"classpath*:/spring/applicationContext.xml","classpath*:springmvc-servlet.xml"})
public class SolrTest{
//获取solr服务
@Autowired
private HttpSolrServer httpSolrServer;
@Test
public void query(){
try {
//创建solr查询
SolrQuery query = new SolrQuery();
//设置查询条件
query.set("q", "**");
query.set("fq", "**");
query.set("fl", "**");
query.set("start", "0");
query.set("wt", "xml");
QueryResponse rsp = httpSolrServer.query(query);
SolrDocumentList list = rsp.getResults();
System.out.println("命中数量:"+rsp.getResults().getNumFound());
for (int i = 0; i Set keySet = list.get(i).keySet();
Iterator iterator = keySet.iterator();
System.out.println();
while (iterator.hasNext()) {
String key = iterator.next();
System.out.println(key+":===========:"+list.get(i).getFieldValue(key));
}
}
} catch (Exception e) {
e.printStackTrace();
}
}
}
5、添加solr客户端依赖
org.apache.solr
solr-solrj
4.10.3
httpclient
org.apache.httpcomponents
httpcore
org.apache.httpcomponents
需要注意的是该依赖有可能和
org.apache.httpcomponents
httpclient
4.5.3
产生冲突如果项目中添加了httpclient依赖的话,就要把solr中的httpclient剔除