solr安装就不记录了,网上一搜一大把,我这边记录的是安装后的使用过程中的种种问题。。。。
solr安装后启动界面,通过 http://localhost:8983/solr/ 去访问,然后去建一个工程

坑1:装好分词器后,发现扩展分词和停止分词不生效,
网上说在这三个文件里面配置,但无论你怎么配置都没用有木有。
后来经过一步步排查发现


就是你下载的并用到的这个ik包其实已经里面配置了这三个文件,solr主要以这里面的为准,所以无论你外面怎么改都不生效。
坑2:配置定时增量同步数据时的时间错误问题

就是项目目录底下时间不对应,这时候你要去修改配置文件


如图:分别对应两个文件,一个Windows,一个Linux
注意:原来是这么写的 REM set SOLR_TIMEZONE=UTC+8,你要根据你dataimport.properties这个文件里面显示的时间区域去设置,比如我这边显示的是
GMT时间区域的,我在配置文件里面也相应的改成了GMT+8,然后还要记得把 REM这个去掉,因为REM他是一个注释,不去掉是不生效的。
坑3:网上去搜solr的定时任务,配置好之后,不能定时执行
因为配置文件里面
这个最低的时间范围是一分钟,我当时写了个0.1,想让他几秒钟执行一次,但他不支持小数点,导致定时任务不执行。
另外注意,只有数据库时间有更新的时候才会把最新的更新的时间写入到dataimport.properties这个文件里面,而不是每分钟都会写一次。也要注意自己数据库的时间是否准确,不然会影响同步的。
坑4:增量更新的时候,id要小写。
如图:
id如果大写的话,同步数据没问题,但更新或者删除数据(伪删除),不管用,所以要记得id要小写。另外数据库可以设置更新时间这个字段为

这样就可以实时同步数据库的时间
坑5:Java代码里面调用solr的问题
在springboot项目里面配置文件

这样写就行了,网上说的乱七八糟,每个人一套,很乱
在pom文件里面
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-solr</artifactId>
</dependency>
然后在你的Java代码里面

这样去调用就行了,写上自己的solr项目名
注入
@Autowired private SolrClient solrClient;
调用代码
public Map<String, Object> test(@ApiParam String q, @ApiParam Integer page, @ApiParam Integer size) throws IOException, SolrServerException {
SolrQuery params = new SolrQuery();
// 查询条件
params.set("q", "商品");
// params.setFields("commName");
// 排序
// params.addSort("id", SolrQuery.ORDER.desc);
// 分页
params.setStart(page);
params.setRows(size);
// 默认域
params.set("df", "commName");
// 只查询指定域
// params.set("fl", "id,commName,commDesc");
// 开启高亮
params.setHighlight(true);
// 设置前缀
params.setHighlightSimplePre("<span style='color:red'>");
// 设置后缀
params.setHighlightSimplePost("</span>");
String baseURL = "http://localhost:8983/solr/mycore";
// solr数据库是 itaem
QueryResponse queryResponse = solrClient.query("new_core",params);
SolrDocumentList results = queryResponse.getResults();
System.out.println(results.get(0));
// 数量,分页用
long total = results.getNumFound();// JS 使用 size=MXA 和 data.length 即可知道长度了(但不合理)
// 获取高亮显示的结果, 高亮显示的结果和查询结果是分开放的
Map<String, Map<String, List<String>>> highlight = queryResponse.getHighlighting();
List<MallCommodity> beans = queryResponse.getBeans(MallCommodity.class);
Map<String, Object> map = new HashMap<String, Object>();
map.put("total", total);
map.put("data", highlight);
map.put("list", beans);
return map;
}
这样就行了。
坑6:用命令增量
网上很多的命令都不行,其实这样调用就行了
http://localhost:8983/solr/new_core/dataimport?command=delta-import

被折叠的 条评论
为什么被折叠?



