又到了期末,免不了一波作业。
PHP 有一份图书购物商城答辩作业。课本做法实在粗糙。我用 JAVA 重新写了一份。
自从上次 demo4 流产后很久没开新 demo 了,借此机会新开一个 demo。
注意:GIF 非常大,手机用户现在跑还来得及
项目地址: http://demo.leeys.top/demo5/
Gayhub: https://github.com/Dog-Lee/demos 欢迎 start 欢迎 fork
另外,滑稽大作战的代码最近整理好了也提交到 Gayhub 仓库,博客在这里。
注册+登录+购买:
后台管理
Lucene 全文搜索
Lucene:
为什么不用"%keyword%",或者 MySQL5.7 自带的分词索引?后者的理由是精确度不如前者,而前者的理由是不如不用。
我用它用来实现图书的全文索引。它是一款非常高效的 Java 中文全文索引库,是 Java 系公司的必备搜索,像阿里与美团都在使用。Lucene 的 API 在不同的版本差异巨大,官方也没有很好的教程或文档,学习曲线初期非常陡峭。通常我们需要为某个实体对象也就是某一张表做索引以提供全文索引能力,当表一多时,写起来十分痛苦,为了缓解模板尴尬,这里我小造了一个轮子,只需要继承我写的 AbstractLucene 抽象父类,再用重写几个方法,即可为某张表实现全文索引,效果非常棒,具体可以参考 demo5 里的 BookLucene.java 和 UserLucene.java。至于搜索,抽象父类只实现了由 getSearchFields()指定字段的多字段搜索,如果需要自定义搜索,重写父类或者增加方法即可。
大概像这样,很简单吧。
@Component
public class UserLucene extends AbstractLucene<User, String> {
@Override
protected void buildIndex() {}
@Override
protected Analyzer getAnalyzer() {
return CHINA_ANALYZER;
}
@Override
protected Document convert(User e) {
return null;
}
@Override
protected User convert(Document doc) {
return null;
}
@Override
protected Directory getDirectory() {
return null;
}
@Override
protected String[] getSearchFields() {
return null;
}
@Override
public void delete(String id) {
TermQuery query = new TermQuery(new Term("uuid", id));
super.delete(query);
}
@Override
public void update(String id, User e) {
super.update(e, new Term("uuid", id));
}
}
1
doggg OP 不好意思大家,1G 内存的服务器挂了 3 个 Spring Boot 内存上到 70%,加上 8%的 MySQL,刚刚被挤挂了。
|
2
doggg OP 昨晚服务器挂了一个晚上,现在上线了。不好意思 Spring Boot 项目太迟内存了。有熟悉 Spring Boot 内存优化的同学吗?分享一下秘诀。
|
3
omygod 2017-07-04 10:40:45 +08:00
所以说,小打小闹还是别用 java 的好
|
4
mineqiqi 2017-07-04 11:14:01 +08:00
楼主真的厉害,我大学的时候还在打 dota 呢
|
7
claysec 2017-07-04 13:17:14 +08:00
真羡慕能独手开发一套网站应用 demo 的人
|
15
claysec 2017-07-04 14:07:06 +08:00
@doggg 别这样学长。难得都快成为校友了。wechat|whatsapp|line|telegram|qq 随你挑一个:)
|
16
doggg OP 大家都知道怎么联系我的。
|