美文网首页
solr高级查询

solr高级查询

作者: George_Antonio | 来源:发表于2018-05-21 15:43 被阅读0次

    schema.xml中添加field域

        <field name="product_name" type="text_ik" indexed="true" stored="true"/>
        <field name="product_price"  type="float" indexed="true" stored="true"/>
        <field name="product_description" type="text_ik" indexed="true" stored="false" />
        <field name="product_picture" type="string" indexed="false" stored="true" />
        <field name="product_catalog_name" type="string" indexed="true" stored="true" />
        
        <field name="product_keywords" type="text_ik" indexed="true" stored="false" multiValued="true"/>
        
        <copyField source="product_name" dest="product_keywords"/>
        <copyField source="product_description" dest="product_keywords"/>
    

    使用dataimport插件批量导入数据

    添加依赖的jar包(solr-dataimporthandler-4.6.0.jar,solr-dataimporthandler-extras-4.6.0.jar)到collection1/lib文件夹下。

    添加数据库驱动包到collection1/lib文件夹下。

    配置solrconfig.mxl文件,添加一个requestHandler。

     <requestHandler name="/dataimport" class="org.apache.solr.handler.dataimport.DataImportHandler">
        <lst name="defaults">
          <str name="config">data-config.xml</str>
         </lst>
      </requestHandler> 
    

    创建一个data-config.xml,保存到collection1\conf\目录下

    <?xml version="1.0" encoding="UTF-8" ?>  
    <dataConfig>   
    <dataSource type="JdbcDataSource"   
              driver="com.mysql.jdbc.Driver"   
              url="jdbc:mysql://localhost:3306/lucene"   
              user="root"   
              password="root"/>   
    <document>   
        <entity name="product" query="SELECT pid,name,catalog_name,price,description,picture FROM products ">
             <field column="pid" name="id"/> 
             <field column="name" name="product_name"/> 
             <field column="catalog_name" name="product_catalog_name"/> 
             <field column="price" name="product_price"/> 
             <field column="description" name="product_description"/> 
             <field column="picture" name="product_picture"/> 
        </entity>   
    </document>   
    
    </dataConfig>
    

    重启tomcat,打开浏览器页面,DataImport导入数据。

    浏览器页面查询:

    select.png

    solrj查询

    @Test
        public void testSolrj() throws Exception{
            // 创建httpsolrserver对象, 链接solr服务器
            HttpSolrServer server = new HttpSolrServer("http://localhost:8080/solr/");
            // 创建query查询对象
            SolrQuery query = new SolrQuery();
            // q
            query.setQuery("product_name:蜡笔小新");
            // fq
            query.setFilterQueries("product_price:[* TO 10]");
            // sort
            query.setSort("product_price", SolrQuery.ORDER.desc);
            // start, rows
            query.setStart(0);
            query.setRows(3);
            // fl
            query.setFields("id,product_name,product_price,product_catalog_name");
            // df
            query.set("df", "product_keywords");
            // hl
            query.setHighlight(true);
            query.addHighlightField("product_name");
            query.setHighlightSimplePre("<font color=\"red\">");
            query.setHighlightSimplePost("</font>");
            // 发送查询请求
            QueryResponse response = server.query(query);
            SolrDocumentList results = response.getResults();
            System.out.println("共查询到的结果数为:" + results.getNumFound());
            // 遍历查询的结果
            for (SolrDocument document: results) {
                System.out.println(document.get("id"));
                String productName = "";
                // 取高亮显示
                Map<String, Map<String, List<String>>> highlighting = response.getHighlighting();
                List<String> list = highlighting.get(document.get("id")).get("product_name");
                if (list != null){
                    productName = list.get(0);
                }else{
                    productName = (String) document.get("product_name");
                }
    
                System.out.println(productName);
                System.out.println(document.get("product_price"));
                System.out.println(document.get("product_catalog_name"));
            }
        }
    

    相关文章

      网友评论

          本文标题:solr高级查询

          本文链接:https://www.haomeiwen.com/subject/spafjftx.html