solr查询语法
2016-02-24 17:49
302 查看
首先说下,查询都是基于solrj。如果不清楚solrj。可以当做是对solr查询语句的一个api封装。
solr的查询其实都是向select这个servlet穿字符型的参数,例如:
Solr代码
http://192.168.1.107:8983/solr/collection1/select?q=*%3A*&wt=xml&indent=true
查询的字段格式一般是: 字段名: 字段值
说明号会被urlcoding,变成“%3A。”
我没有看过solrj的源码。但是应该是将对select这个servlet的请求通过httpclient的方式的一种实现。
进入正题:
首先需要实例化 SolrQuery 对象,用来做要查询的参数集合。
Java代码
SolrQuery q = new SolrQuery();
q.setQuery("TITLE:中国人");
1、最基本的字段查询:
Java代码
TITLE:中国人
即查询 字段是TITLE 值包含“中国人”的所有结果集。
solr在查询时,会对传入的值分词, 中国人有可能会被分成“中国”,“国人”,“中国人”。
包含着三个短语的语句都会被搜到。强制要求solr不分词,可以给短语加上双引号
Java代码
TITLE:"中国人"
这样就只返回值包含“中国人”这个词语的。中国和 国人就不会返回。
2、多字段或关系 OR
Java代码
TITLE:("中国人" AND "美国人" AND "英国人")
3.多字段不包含的关系 NOT
这个语法就是我吃苦的地方,之前已经当多值or那样去查,结果不是,要写成
Java代码
TITLE:(* NOT "上网费用高" NOT "宽带收费不合理" )
4.查询一个范围 BETWEEN
Java代码
NUM:[-90 TO 360 ] OR CREATED_AT:[" + date1 + " TO " + date2 + "]
适用于数字和日期类型 .
日期转换上, date 要用
Java代码
方式一:
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSS'Z'");
String date1 = sdf.format(new Date());
来转换,而不是惯用的 yyyy-MM-dd HH:mm:ss
如:查询时间是2013年1月1号以后的数据
solr的查询其实都是向select这个servlet穿字符型的参数,例如:
Solr代码
http://192.168.1.107:8983/solr/collection1/select?q=*%3A*&wt=xml&indent=true
查询的字段格式一般是: 字段名: 字段值
说明号会被urlcoding,变成“%3A。”
我没有看过solrj的源码。但是应该是将对select这个servlet的请求通过httpclient的方式的一种实现。
进入正题:
首先需要实例化 SolrQuery 对象,用来做要查询的参数集合。
Java代码
SolrQuery q = new SolrQuery();
q.setQuery("TITLE:中国人");
1、最基本的字段查询:
Java代码
TITLE:中国人
即查询 字段是TITLE 值包含“中国人”的所有结果集。
solr在查询时,会对传入的值分词, 中国人有可能会被分成“中国”,“国人”,“中国人”。
包含着三个短语的语句都会被搜到。强制要求solr不分词,可以给短语加上双引号
Java代码
TITLE:"中国人"
这样就只返回值包含“中国人”这个词语的。中国和 国人就不会返回。
2、多字段或关系 OR
Java代码
TITLE:("中国人" AND "美国人" AND "英国人")
3.多字段不包含的关系 NOT
这个语法就是我吃苦的地方,之前已经当多值or那样去查,结果不是,要写成
Java代码
TITLE:(* NOT "上网费用高" NOT "宽带收费不合理" )
4.查询一个范围 BETWEEN
Java代码
NUM:[-90 TO 360 ] OR CREATED_AT:[" + date1 + " TO " + date2 + "]
适用于数字和日期类型 .
日期转换上, date 要用
Java代码
方式一:
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSS'Z'");
String date1 = sdf.format(new Date());
来转换,而不是惯用的 yyyy-MM-dd HH:mm:ss
如:查询时间是2013年1月1号以后的数据
fq=ptime:[2013-01-01T00:00:000Z TO * ]
相关文章推荐
- Swift学习笔记八:枚举
- php计算两个日期相差 年 月 日
- 通过反射创建运行时类对象
- tomcat远程调试模式
- C++中的Lua 常用函数
- 怎样在Unity3D 中加入AdMob
- lua中的require机制
- Android 各类动画的使用方法
- android获取系统wifi状态等
- 深入浅出Java并发包—锁机制(三)
- Cron表达式
- 马云:最想和邓小平喝杯茶 中国出现三个新的增长点
- 第二章:创建对话框
- 总结程序移植或工作配置中的问题
- NSArray、NSMutableArray基本用法
- 网络框架 Retrofit
- 随机数和动画脚本
- 配置PowerShell工作流环境(1)
- tomcat
- IOS:Block的生命周期