Solr 学习(5) —- Solr查询语法和参数
2、查询语法
?
?
solr的一些查询语法?
1.1. 首先假设我的数据里fields有:name, tel, address 预设的搜寻是name这个字段, 如果要搜寻的数据刚好就是 name 这个字段,就不需要指定搜寻字段名称.?
?
1.2. 查询规则:?
如欲查询特定字段(非预设字段),请在查询词前加上该字段名称加 “:” (不包含”号) 符号,?
例如: address:北京市海淀区上地软件园 tel:88xxxxx1?
1>. q代表query input?
?
2>. version代表solr版本(建议不要变动此变量)?
?
3>. start代表显示结果从哪一笔结果资料开始,预设为0代表第一笔, rows是说要显示几笔数据,预设为10笔?
(因为有时查询结果可能有几百笔,但不需要显示所有结果,所以预设是从第一笔开始到第十笔)?
所以若要显示第10到30笔就改为:?
http: //localhost:8080/solr/select/?indent=on&version=2.2&q=address:北京 市海淀区上地软件园+tel:88xxxxx1&version=2.2&start=10&rows= 20&indent=on?
(indent代表输出的xml要不要缩行.预设为开启 on)?
?
1.3. 另外,要限定输出结果的内容可用 “fl=” 加上你要的字段名称,如以下这个范例:?
http: //localhost:8080/solr/select/?indent=on&version=2.2&q=text:北京+ OR+text:亿度&start=0&rows=10&fl=name,address,tel?
在fl=之后加上了name,adress,tel?
所以结果会如下:?
?
?
?
3、查询参数
常用
不常用
其它
?
1.?“:” 指定字段查指定值,如返回所有值*:*
2.?“?” 表示单个任意字符的通配
3.?“*” 表示多个任意字符的通配(不能在检索的项开始使用*或者?符号)
4.?“~” 表示模糊检索,如检索拼写类似于”roam”的项这样写:roam~将找到形如foam和roams的单词;roam~0.8,检索返回相似度在0.8以上的记录。
5.?邻近检索,如检索相隔10个单词的”apache”和”jakarta”,”jakartaapache”~10
6.?“^” 控制相关度检索,如检索jakarta apache,同时希望去让”jakarta”的相关度更加好,那么在其后加上”^”符号和增量值,即jakarta^4 apache
7.?布尔操作符AND、||
8.?布尔操作符OR、&&
9.?布尔操作符NOT、!、-?(排除操作符不能单独与项使用构成查询)
10.“+” 存在操作符,要求符号”+”后的项必须在文档相应的域中存在
11.( )?用于构成子查询
12.[]?包含范围检索,如检索某时间段记录,包含头尾,date:[200707 TO 200710]
13.{}?不包含范围检索,如检索某时间段记录,不包含头尾
date:{200707TO 200710}
???注:范围检索字段只适用于:String,int,dobule,date不能用于long型的字段
14.\?转义操作符,特殊字符包括+ - && || ! ( ) { } [ ] ^?” ~ * ? :\