# searching-recommend
基于 solr 和协同过滤算法的构件检索与推荐系统
## 简介
> 定义
构件:一些可完成特定功能的代码片段和接口,包含构件名称和构件描述等属性,以图形化作为表现形式
流程:构件以线性关系进行组合后的以期望能完成更复杂功能的执行过程,以图形化作为表现形式
本项目依托于 Hadoop 大数据环境(包括 HDFS、HBase、Phoenix、Spark、Kafka、Zookeeper、Yarn),借助 Solr 框架集成 jieba 分词作为搜索引擎,实现通过同义词进行构件检索。利用 Spark ML 编写基于物品的协同过滤算法实现构件推荐。
## 项目环境搭建
### Hadoop 环境搭建
需要安装以下 hadoop 环境,推荐借助 Ambari 进行搭建,Ambari 的安装教程见
[ambari 2.6.x 本地仓库搭建和离线安装]: https://glassywing.github.io/2018/04/01/blog-02/
需要安装的 Hadoop 环境有如下几项,安装教程见各工具官方文档:
* HDFS 2.7.0 +
* MapReduce2 2.7.0 +
* YARN 2.7.0 +
* HBase 1.2.x
* Spark 2.3.0
* Phoenix 4.13.0
* Zookeeper 3.4.0 +
* Solr 7.0 +
* hbase-indexer
### 项目maven依赖
本项目以 maven 作为依赖管理工具,特别的,你需要首先安装或打包以下依赖包(这些库不存在于公共仓库,请下载安装,安装教程见各工具说明),
* [better-jieba](https://github.com/GlassyWing/better-jieba)
下载完成后使用`mvn install -DskipTests`安装
* [better-jieba-solr](https://github.com/GlassyWing/better-jieba-solr)
下载完成后使用`mvn package -DskipTests`得到better-jieba-solr-xxx.jar
* [components-recommend](https://github.com/GlassyWing/components-recommend)
下载完成后使用`mvn install -DskipTests`安装
* [hbase-indexer-phoenix-mapper](https://github.com/GlassyWing/hbase-indexer-phoenix-mapper)
下载完成后使用`mvn package -DskipTests`得到hbase-indexer-phoenix-mapper-xxx.jar
在依赖包完成安装或打包后,下载该项目,若你使用 Idea 开发工具,将会自动进行 maven 依赖库的安装。
## 部署说明
### 数据库部署
本项目使用 HBase 作为数据库,并借助 Phoenix 进行 SQL 操作,数据库按照业务逻辑分为三部分
* 构件推荐数据库(构件库,用户库)
* 用户使用历史数据库
* 词库(分词库、同义词库)
数据库定义文件位于`example/sql`目录下。数据文件位于`example/data`目录下。
通过以下指令创建数据表并导入示例数据
```shell
psql.py jieba_dict.sql recommend.sql thesaurus.sql
psql.py -t JIEBA_DICT jieba_dict.csv
psql.py -t THESAURUS_GROUP thesaurus_group.csv
psql.py -t THESAURUS_BELONG thesaurus_belong.csv
psql.py -t USERS users.csv
psql.py -t COMPONENTS components.csv
psql.py -t HISTORY history.csv
```
### solr 配置
1. 将位于`example/solr`目录下的`cn_schema_configs`复制到`${SOLR_HOME}/server/solr/configsets`目录下
2. 并将`better-jieba-solr-1.0-SNAPSHOT.jar`、`phoenix-4.13.1-HBase-1.2-client.jar(位于phoenix安装目录下)`复制到`${SOLR_HOME}/server/solr-webapp/WEB-INF/lib/`目录下并替换`protobuf-java-3.1.0.jar`为`protobuf-java-2.5.0.jar`
3. 创建solr的zookeeper根路径
```shell
bin/solr zk mkroot /solr -z localhost:2181
```
4. 启动 solr 服务
```shell
bin/solr start -force -c -z localhost:2181/solr
```
5. 创建集合`compsCollection`并指定配置集
```shell
bin/solr create -force -c compsCollection \
-n compsCollConfigs \
-s 1 \
-rf 1 \
-d cn_schema_configs
```
### hbase-indexer 配置
1. 将`hbase-indexer-phoenix-mapper-1.0.0.jar`和`phoenix-core-4.13.1-HBase-1.2.jar(位于phoenix安装目录下)`复制到`${HBASE_INDEXER_HOME}\lib`目录下
2. 启动 hbase-indexer 服务
3. 将`example/hbase-indexer/morphlines.conf`复制到`/conf`目录下,没有则创建
4. 创建索引
```shell
hbase-indexer add-indexer -n compsindexer \
--indexer-conf morphline-phoenix-mapper.xml \
--connection-param solr.zk=localhost:2181/solr \
--connection-param solr.collection=compsCollection \
```
### Kafka 配置
1. 启动 Kafka 服务
2. 创建 topic:history,作为用户使用历史记录的 topic
```shell
kafka-topics.sh --create --zookeeper localhost:2181 --replication-factor 1 --partitions 1 --topic history
```
### application.yml 配置
需指定 solr 服务器地址及参数、zookeeper 地址、kafka 地址和 Kafka Producer、Kafka Comsumer 的参数等,具体配置如下所示:
```yml
kafka:
history:
topics:
- history
kafka-params-consumer:
"[bootstrap.servers]": localhost:9092
"[group.id]": history
"[key.deserializer]": org.apache.kafka.common.serialization.StringDeserializer
"[value.deserializer]": org.apache.kafka.common.serialization.StringDeserializer
kafka-params-producer:
"[bootstrap.servers]": localhost:9092
"[key.serializer]": org.apache.kafka.common.serialization.StringSerializer
"[value.serializer]": org.apache.kafka.common.serialization.StringSerializer
"[linger.ms]": 1
"acks": all
"[batch.size]": 200
"[client.id]": history-producer
solr:
address: http://node2.hdp:8983/solr
connectionTimeout: 10000
socketTimeout: 60000
collectionName: compsCollection
```
## 相关项目
[基于solr的构件检索与推荐系统 web端应用](https://github.com/GlassyWing/srapp)
没有合适的资源?快使用搜索试试~ 我知道了~
毕业设计 基于java+SpringBoot+solr和协同过滤算法的构件检索与推荐系统源码+详细文档+全部数据资料 优秀项目
共246个文件
java:110个
txt:83个
xml:20个
1.该资源内容由用户上传,如若侵权请联系客服进行举报
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
版权申诉
0 下载量 131 浏览量
2024-05-08
18:09:47
上传
评论
收藏 2.5MB ZIP 举报
温馨提示
【资源说明】 毕业设计 基于SpringBoot+solr和协同过滤算法的构件检索与推荐系统源码+详细文档+全部数据资料 优秀项目.zip 【备注】 1、该项目是高分毕业设计项目源码,已获导师指导认可通过,答辩评审分达到95分 2、该资源内项目代码都经过mac/window10/11/linux测试运行成功,功能ok的情况下才上传的,请放心下载使用! 3、本项目适合计算机相关专业(如软件工程、计科、人工智能、通信工程、自动化、电子信息等)的在校学生、老师或者企业员工下载使用,也可作为毕业设计、课程设计、作业、项目初期立项演示等,当然也适合小白学习进阶。 4、如果基础还行,可以在此代码基础上进行修改,以实现其他功能,也可直接用于毕设、课设、作业等。 欢迎下载,沟通交流,互相学习,共同进步!
资源推荐
资源详情
资源评论
收起资源包目录
毕业设计 基于java+SpringBoot+solr和协同过滤算法的构件检索与推荐系统源码+详细文档+全部数据资料 优秀项目 (246个子文件)
morphlines.conf 1KB
jieba_dict.csv 4.84MB
history.csv 407KB
thesaurus_belong.csv 89KB
thesaurus_group.csv 68KB
components.csv 10KB
users.csv 580B
.gitignore 93B
ThesaurusServiceImpl.java 11KB
DictionariesController.java 9KB
ComponentsController.java 6KB
ComponentServiceImpl.java 6KB
FileSystemStorageService.java 5KB
JiebaSegmentService.java 4KB
HistoryController.java 3KB
ThesaurusDAO.java 3KB
Schemas.java 2KB
Prediction.java 2KB
Application.java 2KB
StorageService.java 2KB
DictStateSynService.java 2KB
ComponentDAO.java 2KB
ActiveKeyValueStore.java 2KB
Error.java 2KB
SegmentService.java 2KB
Word.java 2KB
HistoryDAO.java 2KB
Component.java 2KB
SynonymsGroup.java 1KB
ThesaurusService.java 1KB
ComponentService.java 1KB
SynonymsGroupStr.java 1KB
SynSignerReceiver.java 1KB
ThesaurusServiceTest.java 1KB
SynonymsRecordParser.java 1KB
ComponentDAOTest.java 1KB
ThesaurusChangeSensor.java 1KB
HistoryKafkaProperties.java 1KB
CompDocumentParser.java 1KB
JiebaDictDAOTest.java 1KB
RecommendController.java 1KB
UserServiceImpl.java 1KB
HistoryRecord.java 1KB
SegmentServiceTest.java 1KB
SynSignerSender.java 1KB
User.java 1KB
SolrConfiguration.java 996B
HistoryDAOTest2.java 988B
HBaseJiebaDictSource.java 976B
NumOfUsers.java 972B
TotalFreq.java 967B
SolrProperties.java 917B
ErrorResult.java 893B
QueryResult.java 868B
HistoryDAOTest.java 820B
ConnectionWatcher.java 810B
HistoryServiceTest.java 797B
PredictionServiceTest.java 787B
HistoryQueryResultForUser.java 769B
NumOfUsersQueryResult.java 738B
ThesaurusDAOTest.java 737B
TotalFreqsQueryResult.java 732B
ComponentsQueryResult.java 730B
CombineResult.java 727B
PredictionResult.java 722B
RebuildIndexController.java 715B
PredictionDAOTest.java 675B
DictQueryResult.java 670B
SynonymsQueryResult.java 666B
HistoryQueryResult.java 659B
FilesQueryResult.java 656B
RawTest.java 648B
WordQueryResult.java 646B
RebuildIndexService.java 640B
SynonymsGroupQueryResult.java 639B
SegmentResult.java 637B
StorageProperties.java 541B
DictSynProperties.java 537B
AbstractFileImporter.java 528B
WithQTimeResult.java 519B
JiebaDictDAO.java 510B
TuneResult.java 476B
SynonymsConvertor.java 474B
Limits.java 416B
UserDAO.java 404B
FileImporter.java 395B
PredictionDAO.java 387B
HDPConfiguration.java 382B
UpdateResult.java 356B
ComponentsUpdateResult.java 326B
ComponentAlreadyExistsException.java 321B
SynonymsGroupNotExistException.java 318B
StorageFileNotFoundException.java 308B
ComponentNotFoundException.java 307B
ThesaurusImportException.java 301B
ThesaurusFormatException.java 300B
UserService.java 299B
UserAlreadyExistsException.java 297B
ComponentLoadException.java 294B
ThesaurusImporter.java 290B
共 246 条
- 1
- 2
- 3
资源评论
不走小道
- 粉丝: 3342
- 资源: 5059
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功