solr 查询同一个core 的关联字段

实现一个core里面多个字段的关联查询:

应用场景是: 词, 句子,文章

希望通过查询实现词,句子,文章里面共同有的关键字

private static CloudSolrServer cloudSolrServer;        private static String zkHost = "192.168.0.157:2181";    private static CloudSolrServer solrServer = new CloudSolrServer(zkHost);    private static synchronized CloudSolrServer getCloudSolrServer(            final String zkHost) {        if (cloudSolrServer == null) {            try {                cloudSolrServer = new CloudSolrServer(zkHost);            } catch (Exception e) {                e.printStackTrace();            }        }

        return cloudSolrServer;    }

public static Map<String, Object> solrCloudR(String skey,  int start, int rows) throws SolrServerException{
		Map<String, Object> mapResults = new HashMap<String, Object>();
		solrServer.setDefaultCollection("collection1");
		SolrQuery solrQuery = new SolrQuery();
	  	solrQuery.set("q","word:"+skey+" OR  nickname:"+skey+" OR  content:"+skey);
            solrQuery.setHighlight(true); // 开启高亮组件
		solrQuery.addHighlightField(skey);// 高亮字段
		solrQuery.setHighlightSimplePre("<font color=‘red‘>");//标记,高亮关键字前缀
		solrQuery.setHighlightSimplePost("</font>");//后缀
		solrQuery.set("start", start);
		solrQuery.set("rows", rows);
		QueryResponse response = solrServer.query(solrQuery);
		SolrDocumentList results = response.getResults();
		long numFound = response.getResults().getNumFound();
		mapResults.put("results:", results);
		System.out.println("numFound=" +numFound);
        for (int i = 0; i < results.size(); ++i) {
            System.out.println(results.get(i));
        }
		return mapResults;
}

public static void main(String[] args) throws Exception {        String skey = "厦门";        //solrCloudR(skey);        //solrCloudR(skey);        //solrSearch(skey, 1, 20);        solrCloudR(skey, 0, 1000);            }

查询结果:

numFound=5
SolrDocument{createtime=Mon Aug 24 14:58:59 PDT 2015, id=502, articlenum=0, sex=true, username=ad, updatetime=Mon Aug 24 16:19:31 PDT 2015, nickname=厦门, wordnum=0, sentencenum=0, money=0.0, _version_=1510384955694252032}
SolrDocument{createtime=Fri Aug 21 11:38:48 PDT 2015, id=132, articlenum=0, username=15622238554, updatetime=Mon Aug 24 18:47:56 PDT 2015, nickname=厦门厦门厦门, wordnum=0, sentencenum=0, money=0.0, password=96E79218965EB72C92A549DD5A330112, _version_=1510384955754020864}
SolrDocument{uid=56, feel=1, updatetime=Mon Aug 24 11:15:58 PDT 2015, state=1, createtime=Mon Aug 24 11:16:00 PDT 2015, id=5, content=[听说台风都不来厦门的], articlenum=112, forwardnum=1, supportnum=1, word=厦门厦门, _version_=1510384955107049472}
SolrDocument{uid=12, feel=1, updatetime=Mon Aug 24 15:04:20 PDT 2015, state=1, createtime=Mon Aug 24 15:04:24 PDT 2015, id=501, content=[听说厦门又下雨], articlenum=12, forwardnum=1, supportnum=1, word=厦门又下雨, _version_=1510384955013726208}
SolrDocument{uid=12, feel=1, updatetime=Mon Aug 24 15:04:20 PDT 2015, state=1, createtime=Mon Aug 24 15:04:24 PDT 2015, id=500, content=[最近天气很不稳定], articlenum=12, forwardnum=1, supportnum=1, word=厦门高温, _version_=1510384954935083008}
时间: 2024-10-13 15:29:03

solr 查询同一个core 的关联字段的相关文章

Solr查询详解

一. 查询参数说明 在做solr查询的时候,solr提供了很多参数来扩展它自身的强大功能!以下是使用频率最高的一些参数! 1.常用 q - 查询字符串,这个是必须的.如果查询所有*:* ,根据指定字段查询(Name:张三 AND Address:北京) fq - (filter query)过虑查询,作用:在q查询符合结果中同时是fq查询符合的,例如:q=Name:张三&fq=CreateDate:[20081001 TO 20091031],找关键字mm,并且CreateDate是200810

solr与.net系列课程(四)solr查询参数的讲解与.net如何获取solr数据

solr与.net系列课程(四)solr查询参数的讲解与.net如何获取solr数据 上一节我们完成了solr连接数据库,细心的朋友会发现一个问题,就是solr其实和语言没有任何关系,配置完成后任何语言都可以直接调用,本章我们主要对solr的查询做出讲解,然后就是新接触的人最关心的.net如何获取solr中的数据. 本节我准备了一个300万左右的数据表,为大家做演示 然后我们开始配置schema.xml 文件: <field name="id" type="string

Solr学习总结(四)Solr查询参数

今天还是不会涉及到java和数据库操作,主要还是总结Solr 的查询参数,还是那句话,只有先明白了solr的基础内容和查询语法,后续学习solr 的java和数据库操作,都是水到渠成的事.这里先列出solr查询所需要的参数 wiki 地址:http://wiki.apache.org/solr/FrontPage, 里面有各个参数详细的介绍. 一.基本查询 q  查询的关键字,此参数最为重要,例如,q=id:1,默认为q=*:*, fl  指定返回哪些字段,用逗号或空格分隔,注意:字段区分大小写

solr 查询

solr 查询参数说明  常用 q - 查询字符串,必须的. fl - 指定返回那些字段内容,用逗号或空格分隔多个. start - 返回第一条记录在完整找到结果中的偏移位置,0开始,一般分页用. rows - 指定返回结果最多有多少条记录,配合start来实现分页. sort - 排序,格式:sort=<field name>+<desc|asc>[,<field name>+<desc|asc>]- . 示例:(inStock desc, price a

7.Solr查询参数

一.基本查询 q  查询的关键字,此参数最为重要,例如,q=id:1,默认为q=*:*, fl  (field list)指定返回哪些字段,用逗号或空格分隔,注意:字段区分大小写,例如,fl= id,title,sort start  返回结果的第几条记录开始,一般分页用,默认0开始 rows  指定返回结果最多有多少条记录,默认值为 10,配合start实现分页 sort  排序方式,例如price asc, id desc wt  (writer type)指定输出格式,有 xml, jso

Oracle 查询主外键关联

一 :在系统表中查询该表的约束键名称 select * from user_constraints where table_name = 'TB_INFOSTAT_TRAINCONFERENCE' 二:在系统表中查询该约束的关联表和关联字段select b.table_name,b.column_name from user_constraints a inner join user_cons_columns bon a.constraint_name = b.constraint_namewh

Solr查询语法笔记

1.常用  q - 查询字符串,这个是必须的.如果查询所有*:* ,根据指定字段查询(Name:张三 AND Address:北京) fq - (filter query)过虑查询,作用:在q查询符合结果中同时是fq查询符合的,例如:q=Name:张三&fq=CreateDate:[20081001 TO 20091031],找关键字mm,并且CreateDate是20081001 fl - 指定返回那些字段内容,用逗号或空格分隔多个. start - 返回第一条记录在完整找到结果中的偏移位置,

solr查询语法(solr query)

1. CoreQueryParam查询的参数  1) q: 查询字符串,必须的. 2) q.op: 覆盖schema.xml的defaultOperator(有空格时用"AND"还是用"OR"操作逻辑),一般默认指定. 3) df: 默认的查询字段,一般默认指定. 4) qt: query type,指定查询使用的Query Handler,默认为"standard". 5) wt: writer type.指定查询输出结构格式,默认为"

MyBatis关联查询,一对多关联查询

实体关系图,一个国家对应多个城市 一对多关联查询可用三种方式实现: 单步查询,利用collection标签为级联属性赋值: 分步查询: 利用association标签进行分步查询: 利用collection标签进行分步查询 单步查询 利用collection标签实现一对多单步关联查询: 指定进行关联查询的Java Bean字段,即collection标签的 property 属性: 指定集合中的Java Bean类型,即collection标签的 ofType属性: 实体类 public cla