SolrJ 的运用
Posted lijianming180
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了SolrJ 的运用相关的知识,希望对你有一定的参考价值。
SolrJ 是操作 Solr 的 Java 客户端,它提供了增加、修改、删除、查询 Solr 索引的 Java 接口。SolrJ 针对 Solr 提供了 REST 的 Http 接口进行了封装, SolrJ 底层是通过使用 HttpClient 来完成 Solr 的操作。
|
|
SQL 脚本(MySQL)
|
|
建立数据模型
|
|
@Field("id") 与 schema.xml 中的 <field name="id" /> 节点相呼应
建立索引文件时,SolrJ 会将 @Field 注解的属性转换成 Solr 文档对象的字段
在检索的时候,SolrJ 会将 Solr 文档对象的字段转换成 @Field 注解的 Bean 的属性
schema.xml 配置片段
|
|
Solr 服务启动报错:
Caused by: org.apache.solr.common.SolrException: Invalid Number: MA147LL/A
解决办法:
将 $SOLR_HOME/core1/conf/elevate.xml(竞价排名)配置文件中的 id 的值改为整型值即可
使用 JDBC 从数据库获取数据
|
|
log4j.xml 配置
|
|
建立索引
|
|
检索文档
|
|
搜索结果
|
|
POST 请求
|
|
最小匹配
|
|
执行查询请求,服务器端记录的日志信息
|
|
hits = 2,即该请求匹配到 2 个文档。
|
|
mm(minimal should match)最小应该匹配多少个短语(查询串分词后的短语)。
再次执行查询请求,服务器端记录的日志信息
|
|
hits = 120,即该请求匹配到 120 个文档。
查询参数
|
|
查询分类是男装,发货地是广东广州的商品(广东广州有空格,需要转义)
|
|
结果排序
|
|
先按价格升序排序,价格相同按销量降序排序。注意不能用 setSort,如
|
|
该方式只会按销量降序排序,价格的排序被覆盖掉不起作用。
facet 查询
Facet 是 solr 的高级搜索功能之一,在检索文档的同时,能够按照 Facet 的域(字段)进行分组统计。Facet 的字段必须被索引,一般来说该字段无需分词,无需存储。
|
|
输出结果
|
|
以上是关于SolrJ 的运用的主要内容,如果未能解决你的问题,请参考以下文章