查询索引的方法有2种:
一.通过solr搜索引擎自己已经实现的功能来查询。即发送url请求到solr服务器。solr会通过这个url请求,返回相应的响应。
solr有个管理界面,url:http://localhost:12002/solr/
在有数据的情况下,可以在这里做各种查询,在这里查询的时候,就会向solr服务器发送各种请求。默认为 * :*即查询所有索引
一般向solr服务器发送请求的url:
http://localhost:12002/solr/db/select/?q=searchIndex%3A*&version=2.2&start=0&rows=10&indent=on 这种形式
(solr层分页)
1.start=0&rows=10这2个参数是用来分页用的。
(查询索引字段)
2.searchIndex%3A*是查询条件表示searchIndex=* %3A是=的urf-8编码。
(发送请求的编码)
3.在向solr发送请求时,必须将中文字符等特殊字符,变成utf-8编码。否则查询不到东西。
(多排序字段)
4.&sort=索引字段名称1+desc,索引字段名称2+desc,索引字段名称3+desc 多个字段用 “," 分隔
(分组操作。和数据库的 group by 差不多)
5.&facet=true&facet.field=索引字段名称
以上这些solr参数对应于lucene的方法。毕竟solr是lucene进行的封装。
1. (solr排序对应于lucene排序)
sort = new Sort(new SortField[]{new SortField("isNew",SortField.INT,true),new SortField("createDate",SortField.STRING,true),new SortField("price",SortField.FLOAT,true)});
2.(solr多字段查询对应lucene多字段查询)
String[] fields={"searchIndex"};
String[] querys={searchIndex};
Occur[] Occurs={BooleanClause.Occur.MUST};
Query query = IKQueryParser.parseMultiField(fields, querys, Occurs);
3.(solr的逻辑操作相当于lucene的多条件组合时的逻辑组合)
OR AND对应于lucene的Occur
Occur[] Occurs={BooleanClause.Occur.MUST};
4.facet这是solr独有的,lucene没有,不过可以自己构造,但是比较复杂,建议直接使用solr的,人家既然实现了,就用呗。
二。自己通过solrj进行编程发送请求,和solr的一样,向服务器发送请求。
这种方式应该说更自由。我做的项目只对建立索引时是通过solrj进行了索引创建。
毕竟不同人需求是不一样的。自己选择合适的方式是重要的。也许方式选错了,得反复重新做。这就比较烦了。
一个新东西,从不懂到懂也是一个过程。