solr之查询索引

查询索引的方法有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进行了索引创建。

        毕竟不同人需求是不一样的。自己选择合适的方式是重要的。也许方式选错了,得反复重新做。这就比较烦了。

        一个新东西,从不懂到懂也是一个过程。

posted @ 2013-04-23 16:07  Dream-Weaver  阅读(642)  评论(0编辑  收藏  举报