# 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)
没有合适的资源?快使用搜索试试~ 我知道了~
基于solr和协同过滤算法的构件检索与推荐系统+源代码+文档说明
共245个文件
java:110个
txt:83个
xml:20个
1.该资源内容由用户上传,如若侵权请联系客服进行举报
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
版权申诉
0 下载量 49 浏览量
2024-05-03
10:04:32
上传
评论
收藏 2.36MB ZIP 举报
温馨提示
- 不懂运行,下载完可以私聊问,可远程教学 该资源内项目源码是个人的毕设,代码都测试ok,都是运行成功后才上传资源,答辩评审平均分达到96分,放心下载使用! <项目介绍> 1、该资源内项目代码都经过测试运行成功,功能ok的情况下才上传的,请放心下载使用! 2、本项目适合计算机相关专业(如计科、人工智能、通信工程、自动化、电子信息等)的在校学生、老师或者企业员工下载学习,也适合小白学习进阶,当然也可作为毕设项目、课程设计、作业、项目初期立项演示等。 3、如果基础还行,也可在此代码基础上进行修改,以实现其他功能,也可用于毕设、课设、作业等。 下载后请首先打开README.md文件(如有),仅供学习参考, 切勿用于商业用途。 --------
资源推荐
资源详情
资源评论
收起资源包目录
基于solr和协同过滤算法的构件检索与推荐系统+源代码+文档说明 (245个子文件)
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
共 245 条
- 1
- 2
- 3
资源评论
机器学习的喵
- 粉丝: 1564
- 资源: 1918
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- 计算机毕业设计:python+爬虫+cnki网站爬
- nyakumi-lewd-snack-3-4k_720p.7z.002
- 现在微信小程序能用的mqtt.min.js
- 基于MPC的非线性摆锤系统轨迹跟踪控制matlab仿真,包括程序中文注释,仿真操作步骤
- 基于MATLAB的ITS信道模型数值模拟仿真,包括程序中文注释,仿真操作步骤
- 基于Java、JavaScript、CSS的电子产品商城设计与实现源码
- 基于Vue 2的zjc项目设计源码,适用于赶项目需求
- 基于跨语言统一的C++头文件设计源码开发方案
- 基于MindSpore 1.3的T-GCNTemporal Graph Convolutional Network设计源码
- 基于Java的贝塞尔曲线绘制酷炫轮廓背景设计源码
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功