`
kavy
  • 浏览: 891614 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

访问solr 常用的URL

 
阅读更多

多个条件查询

select?q=AUTHOR%3Abbb+ADDN%3A123&wt=json&indent=true

 

删除所有

update/?stream.body=<delete><query>*:*</query></delete>&stream.contentType=text/xml;charset=utf-8&commit=true

 

删除某个

update/?stream.body=<delete><id>7</id></delete>&stream.contentType=text/xml;charset=utf-8&commit=true

 

模糊查询

/select?q=777&wt=json&indent=true

 

全量导入

dataimport?command=full-import&clean=true&commit=true&optimize=false

 

增量导入

dataimport?command=delta-import&clean=false&commit=true&optimize=false

 

导入状态查询

dataimport?command=status

 

查看索引文件信息

replication?command=details

 

调试

select?q=id:*200000272250&debugQuery=true

 

文档里的查询实例可以应对一些普通的solr查询,复杂的solr查询还得自己再继续添加代码,自己也在学习中。先贴出完整代码,后再做说明。

注意:在运行如下查询实例前你得先向solr Admin中添加了你要查询的内容并且你所查询的字段(如idnamecontent等)在schema.xml中已被定义。

l  代码如下:

package mysolrtest;

 

import org.apache.solr.client.solrj.SolrQuery;

import org.apache.solr.client.solrj.SolrServer;

import org.apache.solr.client.solrj.SolrServerException;

import org.apache.solr.client.solrj.impl.HttpSolrServer;

import org.apache.solr.client.solrj.response.QueryResponse;

import org.apache.solr.common.SolrDocument;

import org.apache.solr.common.SolrDocumentList;

 

public classQueryTest {

static String url = "http://10.7.11.141:8080/solr";

    static SolrServer solr = new HttpSolrServer(url);

   

    public static void main(String[]arguments) throws SolrServerException{

        QueryTesttest = newQueryTest();

        test.solrOrder();

        test.likeQuery();

        test.pageQuery();

        test.multipleQueryAND();

        test.multipleQueryOR();

        test.multipleQueryNOT();

    }

   

    //排序查询

    public void solrOrder() throws SolrServerException{

        SolrQueryquery = newSolrQuery();         

        query.setQuery("*:*"); //查询所有索引

        query.addSortField("id",SolrQuery.ORDER.asc)//id升序排列

        QueryResponsersp = solr.query(query);

        SolrDocumentListlist = rsp.getResults();

       

        for (int i = 0; i <list.size(); i++){

            //显示查询到的所有字段及字段内容

            System.out.println(list.get(i));

           

            //显示查询到的特定字段内容,下面几个函数也可这样显示

            SolrDocumentdoc = list.get(i);

             System.out.println(doc.get("id") + " " + doc.get("name") +

                " " + doc.get("interest")+ " "+ doc.get("dream"));

        }

       

    }

   

    //模糊查询

    public void likeQuery() throws SolrServerException{

        SolrQueryquery = newSolrQuery();         

        query.setQuery("name:*xiaomutou*");//查询name中含有xiaomutou字样的索引

        QueryResponsersp = solr.query(query);

        SolrDocumentListlist = rsp.getResults();

        for (int i = 0; i <list.size(); i++){

            System.out.println(list.get(i));

        }

    }

   

    //分页查询

    public void pageQuery() throws SolrServerException{

        SolrQueryquery = new SolrQuery();         

        query.setQuery("*:*");

        query.setStart(5);//当设置为5时,表示从第6记录取,默认取值为0,就是从第1条开始取

        query.setRows(5);//表示取出的记录数,默认是10

        QueryResponsersp = solr.query(query);

        SolrDocumentListlist = rsp.getResults();

        for (int i = 0; i <list.size(); i++){

            System.out.println(list.get(i));

        }

    }

   

       //多条件AND(并且)的情况

        public void multipleQueryAND() throws SolrServerException{

       //之前下行语句是在函数外面定义的(上面3个函数也是),如此就会出现覆盖情况

        SolrQuery query = new SolrQuery();

//      query.setQuery("name:*xiaomutou*");

//      query.setFilterQueries("dream:*");//过滤查询,即除上面的条件还需满足有字段dream

 

        //可以用下行语句代替前面两行语句。(注意:AND必须大写,可以用“&&”代替,如果是小写则

        //结果并非我们所预期的。我的理解是and并不是多条件查询关键字,如是and编译器则理解成

        //and字段,而空格相当于多条件OR,所以就相当于是OR查询了)

        query.setQuery("name:*xiaomutou* ANDdream:*");

 

        //idnamedream字段。也可这样写query.setFields("id", "name","dream")

        query.setFields("id, name, dream");

        QueryResponsersp = solr.query(query);

        SolrDocumentListlist = rsp.getResults();

//      System.out.println(list.size());//输出符合条件的list个数

        for (int i = 0; i < list.size();i++){

            System.out.println(list.get(i));

        }

    }

   

    //多条件OR(或者)的情况

    public void multipleQueryOR() throws SolrServerException{

        SolrQueryquery = newSolrQuery();

        query.setQuery("name:*datou* OR content:*"); //OR必须大写或用空格“||”代替

        query.setFields("id, name, content");

        QueryResponsersp = solr.query(query);

        SolrDocumentListlist = rsp.getResults();

        for (int i = 0; i <list.size(); i++){

            System.out.println(list.get(i));

        }

    }

   

    //多条件NOT(非)的情况

    public void multipleQueryNOT() throws SolrServerException{

        SolrQueryquery = newSolrQuery();

        //NOT必须大写或用“-”“!”代替,并且“-”或者“!”必须紧跟content,中间不能有空格

query.setQuery("name:*datou* NOTcontent:stick");

        query.setFields("id, name, content");

        QueryResponsersp = solr.query(query);

        SolrDocumentListlist = rsp.getResults();

        for (int i = 0; i <list.size(); i++){

            System.out.println(list.get(i));

        }

    }

}

l  说明如下:

1.     排序查询

使用addSortField方法可将查询出来的结果按照你指定的字段进行排序。单独运行排序查询结果如下:

(小技巧:可以选中你想注释的代码行按ctrl+7注释掉,取消注释也是如此)

SolrDocument{id=1, name=xiaomutou,sex=female, interest=[Reading travelling watching and singing!],_version_=1462269635528228864}

1 xiaomutou [Reading travellingwatching and singing!] null

SolrDocument{id=2, name=datou,sex=male, interest=[Travelling singsing and learning!], _version_=1462269635557588992}

2 datou [Travelling singsing andlearning!] null

SolrDocument{id=3, name=gufeng,age=22, dream=[Having a beautiful life!], _version_=1462269635558637568}

3 gufeng null [Having a beautifullife!]

SolrDocument{id=4, name=shanyin,age=23, dream=[Giving pengpeng a beautiful life!],_version_=1462269635559686144}

4 shanyin null [Giving pengpeng abeautiful life!]

SolrDocument{id=5, name=jiankang,content=[I just need health!], _version_=1462269635560734720}

5 jiankang null null

SolrDocument{id=6, name=pingan,age=24, content=[I just need safety!], _version_=1462269635560734721}

6 pingan null null

SolrDocument{id=7,name=datouxiaomutou, sex=male, age=23, interest=[Travelling singsing readingwatching and learning!], dream=[Having a beautiful life, travelling around theworld and giving pengpeng a beautiful life!], content=[I will stick to my dreamand strive it throught my life!], _version_=1462269635561783296}

7 datouxiaomutou [Travelling singsing readingwatching and learning!] [Having a beautiful life, travelling around the worldand giving pengpeng a beautiful life!]

2.     模糊查询

模糊查询其实很简单,因为solr本身就支持正则查询,所以通过setQuery指定你要查询的字段,以及要做模糊查询的值就搞定了。单独运行模糊查询结果如下:

SolrDocument{id=1, name=xiaomutou,sex=female, interest=[Reading travelling watching and singing!],_version_=1462269635528228864}

SolrDocument{id=7,name=datouxiaomutou,sex=male,age=23,interest=[Travellingsingsing reading watching and learning!], dream=[Having a beautiful life,travelling around the world and giving pengpeng a beautiful life!], content=[Iwill stick to my dream and strive it throught my life!],_version_=1462269635561783296}

3.分页查询

这里用到了setStart以及setRows方法进行分页,其用法见代码注释。单独运行分页查询结果如下:(说明:因为setStart5)参数设为5,所以结果从第6条记录开始输出)

SolrDocument{id=6, name=pingan,age=24, content=[I just need safety!], _version_=1462269635560734721}

SolrDocument{id=7,name=datouxiaomutou,sex=male,age=23,interest=[Travellingsingsing reading watching and learning!], dream=[Having a beautiful life,travelling around the world and giving pengpeng a beautiful life!], content=[Iwill stick to my dream and strive it throught my life!],_version_=1462269635561783296}

4.多条件查询

多条件查询AND、OR和NOT情况类似,具体用法见代码注释。单独运行多条件查询结果如下:

SolrDocument{id=7,name=datouxiaomutou, dream=[Having a beautiful life, travelling around theworld and giving pengpeng a beautiful life!]}

AND查询结果如上)

SolrDocument{id=7,name=datouxiaomutou, content=[I will stick to my dream and strive it throughtmy life!]}

SolrDocument{id=2, name=datou}

SolrDocument{id=5, name=jiankang,content=[I just need health!]}

SolrDocument{id=6, name=pingan,content=[I just need safety!]}

OR查询结果如上,优先输出同时满足多个条件的,在这里即为id=7索引内容)

SolrDocument{id=2, name=datou}

NOT查询结果如上)

备注:在多条件查询NOT这里,运行结果起初没有达到自己所想要的(自己想只输出id=2索引内容,而之前把id=7索引内容也一起输出了),为了解决这个问题,自己网上找了一下午的资料都没解决,我以为自己没有理解AND、OR和NOT的语法。最后找老师帮忙看是哪里出错了,一起和老师调试程序并网上查资料弄了差不多也有一小时吧,终于找到了问题的根本,原来是content字段没被索引,即在schema.xml中把content字段中的index设置成了false,将其改为true即可(注意:要在tomcat目录下修改schema.xml<记得保存>重启tomcat再重新添加索引内容到solr Admin中才行,在solr下修改schema.xml没有)

分享到:
评论

相关推荐

    手把手教你 对 solr8 配置用户登录验证 涉及到的配置文件

    这段代码表示所有 `/solr/` 下的 URL 都需要进行基本认证,并且只有 `admin` 和 `user` 角色的用户才能访问。 4. **启动 Solr 并测试** 配置完成后,重启 Solr 服务,然后尝试访问 Solr 管理界面。浏览器应该会弹...

    solr配置和solrj使用(demo)

    SolrJ是访问Solr的Java客户端库,提供了添加、更新和查询Solr索引的功能。以下是一些基本的使用示例: 1. **添加文档** - 使用SolrJ添加文档非常简单,只需创建一个`SolrInputDocument`对象,并调用`SolrServer....

    solr文档.docx

    - 启动Solr服务后,可以通过以下URL访问Solr: ``` http://192.168.172.130:8983/solr/index.html ``` **6. 配置Solr Core** - **创建配置目录**:例如,为了导入店铺信息和商品信息,需要创建相应的配置目录:...

    最新版linux solr-8.8.2.tgz

    Solr 提供了一个内置的管理界面,可以通过浏览器访问 `http://localhost:8983/solr/` 来查看核心状态、执行查询和管理索引。 9. **优化与更新**: 随着数据的增长和变化,可能需要对索引进行优化以提高搜索性能。...

    Solr(Cloudera)使用手册

    3. **加载DataImportHandler jar包**:确保Solr能够访问DataImportHandler所需的jar包,这通常是通过将jar包放置在Solr的lib目录下来实现的。 #### 五、配置中文分词 中文分词对于处理中文文本非常重要,可以提高...

    asp.net调用Solr

    最后,为了优化性能,你还可以考虑在ASP.NET中实现缓存策略,例如使用内存缓存或者分布式缓存服务(如Redis),减少对Solr的频繁访问。 总结来说,ASP.NET调用Solr涉及的主要知识点包括:使用SolrNet客户端库、配置...

    SOLR学习笔记

    #### 五、访问Solr管理界面 完成上述步骤后,可以通过浏览器访问 Solr 的管理界面。默认情况下,管理界面的 URL 为 `http://localhost:8080/solr`。 #### 六、总结 Solr 作为一种成熟的企业级搜索平台,凭借其...

    solr入门教程

    Solr 是一个开源的全文搜索引擎,它提供了高效、可扩展的搜索和分析功能。本教程将引导你完成Solr的基本安装、配置以及数据库索引的建立,特别关注定时增量索引这一重要特性。 首先,从Apache官方网站下载Solr的...

    solr安装和介绍

    6. **修改 server.xml 文件中的编码**:在 Tomcat 的 `server.xml` 文件中修改 URL 编码设置,确保正确的字符集支持。 #### 六、总结 本文详细介绍了 Solr 的安装过程及 SolrCore 的配置方法。通过上述步骤,用户...

    solr安装部署文档

    5. 访问 http://ip:8983/solr,进入 Solr 控制台。 Solr 导入 Oracle 数据库 Solr 可以通过 DataImportHandler 从 Oracle 数据库中导入数据,并创建索引。下面是具体的步骤: 1. 将 dist 文件夹下的 solr-...

    windows-solr集群.docx

    - 启动Tomcat,访问[http://localhost:8080/solr/index.html](http://localhost:8080/solr/index.html)检查是否安装成功。 3. **Solr管理界面**: - Solr管理界面提供了详细的配置选项,包括核心管理(Core ...

    solr.md Solr是一个高性能,采用Java开发

    2. **访问Solr管理界面**:在浏览器中输入`http://localhost:8983/solr`即可访问Solr的管理控制台。 3. **创建核心实例(Core)**:在Solr管理界面中选择“New Core”来创建一个新的核心实例。如果创建过程中遇到...

    solr6.0 tomcat搭建

    url="your_database_url" user="your_username" password="your_password"/&gt; query="SELECT uid, openid, phone, username, headimgurl, sex, province, city, country FROM xs_user"&gt; ...

    solr 笔记

    这表明这是一个具体的Solr服务访问对象(Service Access Object)实现,用于处理与Solr服务器的交互。 #### 三、依赖注入与配置 1. **依赖注入**:通过`@Autowired`注解,将`SolrService`服务注入到`SolrSaoImpl`...

    Solr 下载地址

    4. **RESTful API**:Solr 使用标准的HTTP协议,通过简单的URL即可完成对索引和查询操作的调用。 5. **高可用性**:Solr 提供了复制机制,确保数据的可靠性和服务的连续性。 ### Solr版本的选择 由于Solr持续发展...

    solr+tomcat处理后的简易部署+说明文档(下)

    这样,你就可以通过`http://yourserver:port/solr`访问Solr了。 5. **启动Tomcat**:重启Tomcat服务器,Solr应该会自动启动。在浏览器中输入上述URL,如果看到Solr的管理界面,说明部署成功。 6. **创建和配置...

    solr5.3.1集群搭建教程-线上环境搭建

    如果能够正常访问Solr的管理界面,则表示配置成功。 ### 3. 配置ZooKeeper集群 最后一步是配置ZooKeeper集群来支持Solr集群的稳定性与高可用性。 **步骤一:** 解压`zookeeper-3.4.6.tar.gz`到`D:\Java\solrCloud...

Global site tag (gtag.js) - Google Analytics