zoukankan      html  css  js  c++  java
  • (转) 淘淘商城系列——使用SolrJ查询索引库

    http://blog.csdn.net/yerenyuan_pku/article/details/72908538

    我们有必要在工程中写查询索引库的代码前先进行必要的测试。我们先到Solr服务页面去简单进行查询,如下图所示,在搜索条件”q”这一栏,我们输入”手机”,分页参数的每页显示条数我们随便写一个数,这里我写的是3,也就是一次只查询三条数据。由于在查询条件一栏没有指定搜索域,因此默认搜索域一定要指定,否则无法查询出数据,我们在Solr服务器的schema.xml文件当中配置了复制域”item_keywords”,我们的默认搜索域便使用复制域”item_keywords”。 

    我们还应知道在天猫或者京东,当搜索出结果后关键字是高亮显示的,我们也应该有高亮显示效果,我们点击”hl”前面的复选框就会展开如下图关于高亮显示的配置,让我们指定要高亮显示的字段以及高亮显示的html代码(在关键字前面和后面都有,比如<em>手机</em>),最后点击”Execute Query”按钮便可以查询到如下图右侧的数据,上面是查询出来的商品列表信息,下面是高亮信息”highlighting”。 

    大家应该注意到下图高亮数据部分有一条查询结果是空的("143771131488369": {}),这是因为这条数据的item_title字段是”121”并没有关键字”手机”,但是在商品分类中有关键字”手机”,于是认为该商品也符合搜索条件(复制域的意思是把各个字段的值都复制到”item_keywords”当中,查询的时候,只要满足其中一个字段的条件便认为是满足条件),但由于”item_title”字段没有关键字”手机”,因此显示的高亮结果是"143771131488369":{}。 
    针对上面的查询条件,我们使用Java测试代码来跑一遍,在taotao-search-service工程的TestSolrJ单元测试类中添加如下测试方法。

    @Test
    public void testQueryDocument() throws Exception {
        SolrServer solrServer = new HttpSolrServer("http://192.168.25.129:8080/solr");
        // 创建一个SolrQuery对象
        SolrQuery query = new SolrQuery();
        query.setQuery("手机");
        // 设置自己的分页条件
        query.setStart(0); // 从0开始
        query.setRows(3); // 每页取10条记录
        // 设置默认搜索域
        query.set("df", "item_keywords");
        query.setHighlight(true); // 开启高亮显示
        query.addHighlightField("item_title"); // 添加高亮显示的域
        query.setHighlightSimplePre("<em>"); // 设置高亮显示的前缀
        query.setHighlightSimplePost("</em>"); // 设置高亮显示的后缀
        // 执行查询
        QueryResponse response = solrServer.query(query);
        // 取查询结果
        SolrDocumentList solrDocumentList = response.getResults();
        // 查询结果总记录数
        System.out.println("查询结果总记录数:" + solrDocumentList.getNumFound());
        for (SolrDocument solrDocument : solrDocumentList) {
            System.out.println(solrDocument.get("id"));
            String itemName = null;
            // 取高亮显示
            Map<String, Map<String, List<String>>> highlighting = response.getHighlighting();
            List<String> list = highlighting.get(solrDocument.get("id")).get("item_title");
            if (list != null && list.size() > 0) {
                itemName = list.get(0); // 将高亮后的结果取出来
            } else {
                itemName = (String) solrDocument.get("item_title");
            }
            System.out.println(itemName);
            System.out.println(solrDocument.get("item_sell_point"));
            System.out.println(solrDocument.get("item_price"));
            System.out.println(solrDocument.get("item_image"));
            System.out.println(solrDocument.get("item_category_name"));
            System.out.println("--------------------------------------------------------------");
        }
    }

    运行以上方法,Eclipse控制台将打印如下图所示的结果。 

  • 相关阅读:
    各国语言缩写列表,各国语言缩写-各国语言简称,世界各国域名缩写
    How to see log files in MySQL?
    git 设置和取消代理
    使用本地下载和管理的免费 Windows 10 虚拟机测试 IE11 和旧版 Microsoft Edge
    在Microsoft SQL SERVER Management Studio下如何完整输出NVARCHAR(MAX)字段或变量的内容
    windows 10 x64系统下在vmware workstation pro 15安装macOS 10.15 Catelina, 并设置分辨率为3840x2160
    在Windows 10系统下将Git项目签出到磁盘分区根目录的方法
    群晖NAS(Synology NAS)环境下安装GitLab, 并在Windows 10环境下使用Git
    使用V-2ray和V-2rayN搭建本地代理服务器供局域网用户连接
    windows 10 专业版安装VMware虚拟机碰到的坑
  • 原文地址:https://www.cnblogs.com/telwanggs/p/6962418.html
Copyright © 2011-2022 走看看