实时分析系统ElasticSearchLZ名約山炮

百度:我们比如说想找寻任何的信息的时候,就会上百度去搜索一下,比如说找一部自己喜欢的电影,或者说找一本喜欢的书,或者找一条感兴趣的新闻(提到搜索的第一印象)。百度!=搜索

1)互联网的搜索:电商网站,招聘网站,新闻网站,各种app

2)IT系统的搜索:OA软件,办公自动化软件,会议管理,日程管理,项目管理。

用数据库来实现搜索,是不太靠谱的。通常来说,性能会很差

1)全文检索,倒排索引

2)lucene,就是一个jar包,里面包含了封装好的各种建立倒排索引,以及进行搜索的代码,包括各种算法。我们就用java开发的时候,引入lucenejar,然后基于lucene的api进行去进行开发就可以了

可以看到Lucene为倒排索引(TermDictionary)部分又增加一层TermIndex结构,用于快速定位,而这TermIndex是缓存在内存中的,但MySQL的B+tree不在内存中,所以整体来看ES速度更快,但同时也更消耗资源(内存、磁盘)

ElasticSearch,基于Lucene,隐藏复杂性,提供简单易用的RestfulAPI接口、JavaAPI接口(还有其他语言的API接口),ElasticSearch是一个实时分布式搜索和分析引擎。它用于全文搜索、结构化搜索、分析。

关于ElasticSearch的一个传说,有一个程序员失业了,陪着自己老婆去英国伦敦学习厨师课程。程序员在失业期间想给老婆写一个菜谱搜索引擎,觉得Lucene实在太复杂了,就开发了一个封装了Lucene的开源项目:Compass。后来程序员找到了工作,是做分布式的高性能项目的,觉得Compass不够,就写了ElasticSearch,让Lucene变成分布式的系统。

全文检索:将非结构化数据中的一部分信息提取出来,重新组织,使其变得有一定结构,然后对此有一定结构的数据进行搜索,从而达到搜索相对较快的目的。

结构化检索:我想搜索商品分类为日化用品的商品都有哪些,select*fromproductswherecategory_id='日化用品'。

数据分析:电商网站,最近7天牙膏这种商品销量排名前10的商家有哪些;新闻网站,最近1个月访问量排名前3的新闻版块是哪些。

1)维基百科,类似百度百科,牙膏,牙膏的维基百科,全文检索,高亮,搜索推荐。

4)GitHub(开源代码管理),搜索上千亿行代码。

1)天然分片,天然集群,ES把数据分成多个shard,下图中的P0-P2,多个shard可以组成一份完整的数据,这些shard可以分布在集群中的各个机器节点中。随着数据的不断增加,集群可以增加多个分片,把多个分片放到多个机子上,已达到负载均衡,横向扩展。

2)ElasticSearch不是什么新技术,主要是将全文检索、数据分析以及分布式技术,合并在了一起,才形成了独一无二的ES;lucene(全文检索),商用的数据分析软件(也是有的),分布式数据库(mycat)

3)对用户而言,是开箱即用的,非常简单,作为中小型的应用,直接3分钟部署一下ES,就可以作为生产环境的系统来使用了,数据量不大,操作不是太复杂

近实时,两个意思,从写入数据到数据可以被搜索到有一个小延迟(大概1秒);基于es执行搜索和分析可以达到秒级。

集群包含多个节点,每个节点属于哪个集群是通过一个配置(集群名称,默认是elasticsearch)来决定的,对于中小型应用来说,刚开始一个集群就一个节点很正常

集群中的一个节点,节点也有一个名称(默认是随机分配的),节点名称很重要(在执行运维管理操作的时候),默认节点会去加入一个名称为“elasticsearch”的集群,如果直接启动一堆节点,那么它们会自动组成一个elasticsearch集群,当然一个节点也可以组成一个elasticsearch集群。

索引包含一堆有相似结构的文档数据,比如可以有一个客户索引,商品分类索引,订单索引,索引有一个名称。一个index包含很多document,一个index就代表了一类类似的或者相同的document。比如说建立一个productindex,商品索引,里面可能就存放了所有的商品数据,所有的商品document。

6.0版本之前每个索引里都可以有多个type,6.0版本之后每个索引里面只能有一个Type,一般使用_doc代替了。

商品index,里面存放了所有的商品数据,商品document

商品type:product_id,product_name,product_desc,category_id,category_name,service_period

每一个type里面,都会包含一堆document

{"product_id":"1","product_name":"长虹电视机","product_desc":"4k高清","category_id":"3","category_name":"电器","service_period":"1年"}{"product_id":"2","product_name":"基围虾","product_desc":"纯天然,冰岛产","category_id":"4","category_name":"生鲜","eat_period":"7天"}1.7.6Document(文档-行)文档是ES中的最小数据单元,一个document可以是一条客户数据,一条商品分类数据,一条订单数据,通常用JSON数据结构表示,每个index下的type中,都可以去存储多个document。

一个document里面有多个field,每个field就是一个数据字段

productdocument{"product_id":"1","product_name":"高露洁牙膏","product_desc":"高效美白","category_id":"2","category_name":"日化用品"}1.7.8Mapping(映射-约束)数据如何存放到索引对象上,需要有一个映射配置,包括:数据类型、是否存储、是否分词等。

Mapping用来定义Document中每个字段的类型,即所使用的分词器、是否索引等属性,非常关键等。创建Mapping的代码示例如下:

PUTstudent(index_name->database){"mappings":{"_doc":{(type_name->table)"properties":{"stu_id":{(field_name->colume)"type":"keyword"},"name":{(field_name->colume)"type":"keyword"},"birth":{(field_name->colume)"type":"date"(yyyy-MM-ddHH:mm)}}}}}1.7.9ElasticSearch与数据库的类比关系型数据库(比如Mysql)

非关系型数据库(ElasticSearch)

数据库Database

索引Index

表Table

类型Type(6.0版本之后在一个索引下面只能有一个,7.0版本之后取消了Type)

数据行Row

文档Document(JSON格式)

数据列Column

字段Field

约束Schema

映射Mapping

1)索引对象(blog):存储数据的表结构,任何搜索数据,存放在索引对象上。

2)映射(mapping):数据如何存放到索引对象上,需要有一个映射配置,包括:数据类型、是否存储、是否分词等。

3)文档(document):一条数据记录,存在索引对象上。

4)文档类型(type):一个索引对象,存放多种类型数据,数据用文档类型进行标识。

2)下载Elasticsearch

3)由于后面我们需要用到Kibana,所以我们继续下载Kibana

4)由于后面我们需要用到IK分词器,所以我们继续下载IK分词

1)上传elasticsearch-6.6.0.tar.gz到hadoop104机器上的/opt/software目录下

2)解压elasticsearch-6.6.0.tar.gz到/opt/module目录下

tar-zxvf/opt/software/elasticsearch-6.6.0.tar.gz-C/opt/module/3)在/opt/module/elasticsearch-6.6.0目录下创建datas文件夹

cd/opt/module/elasticsearch-6.6.0mkdirdatas4)修改配置文件elasticsearch.yml

(2)nodename随意取但是集群内的各节点不能相同

(3)修改后的每行前面不能有空格,修改后的“:”后面必须有一个空格

5)修改配置文件jvm.options

vim/opt/module/elasticsearch-6.6.0/config/jvm.options#修改-Xms1g-Xmx1g#为-Xms256m-Xmx256m6)分发

xsync/opt/module/elasticsearch-6.6.0/7)分发完成后修改hadoop102和hadoop103主机的elasticsearch.yml文件中的node.name和network.host属性

2)分发

sudo/home/atguigu/bin/xsync/etc/security/limits.conf3)切换到root用户修改配置sysctl.conf,可以使用sudo

sudovim/etc/sysctl.conf#添加下面配置:vm.max_map_count=6553604)查看是否设置vm.max_map_count成功

5)分发

sudo/home/atguigu/bin/xsync/etc/sysctl.conf6)重启Linux虚拟机

#关机xcall.shshutdown-hnow7)重启虚拟机之后我们开始启动Elasticsearch(hadoop104上执行该命令)

9)新开一个hadoop104的shell窗口

10)停止Elasticsearch

#kill-9进程号kill-9182411)Elasticsearch集群启动/停止脚本

vim/home/atguigu/bin/elasticsearch.sh#!/bin/bashif(($#!=1))thenecho请输入单个start或stop参数!exitfi#对传入的单个参数进行校验,在hadoop102和hadoop103且执行第一层采集通道的启动和停止命令if[$1=start]thencmd="nohup/opt/module/elasticsearch-6.6.0/bin/elasticsearch>/dev/null2>&1&"elif[$1=stop]thencmd="ps-ef|grepElasticsearch|grep-vgrep|awk'{print\$2}'|xargskill"elseecho请输入单个start或stop参数!fi#在hadoop102和hadoop103且执行第一层采集通道的启动和停止命令foriinhadoop102hadoop103hadoop104doecho"--------------$i-----------------"ssh$i$cmdsleep8sdone12)赋予可执行权限

chmod+x/home/atguigu/bin/elasticsearch.sh13)分发脚本

xsync/home/atguigu/bin/elasticsearch.sh14)启动Elasticsearch集群

1)请求:

1)Kibana的安装,将kibana-6.6.0-linux-x86_64.tar.gz上传到hadoop104集群上的/opt/software目录中

2)解压kibana-6.6.0-linux-x86_64.tar.gz至/opt/module/

tar-zxvf/opt/software/kibana-6.6.0-linux-x86_64.tar.gz-C/opt/module/3)重命名

mv/opt/module/kibana-6.6.0-linux-x86_64//opt/module/kibana-6.6.04)修改kibana.yml,以连接Elasticsearch

7)修改之前的ES启动脚本为:

vim/home/atguigu/bin/elasticsearch.sh#!/bin/bashif(($#!=1))thenecho请输入单个start或stop参数!exitfies_home=/opt/module/elasticsearch-6.6.0kibana_home=/opt/module/kibana-6.6.0case$1in"start"){foriinhadoop102hadoop103hadoop104doecho"==============$i启动Elasticsearch=============="ssh$i"source/etc/profile;${es_home}/bin/elasticsearch>/dev/null2>&1&"sleep5s;donesleep2s;echo"==============hadoop104启动Kibana=============="sshhadoop104nohup${kibana_home}/bin/kibana>kibana.log2>&1&};;"stop"){sshhadoop104ps-ef|grep${kibana_home}|grep-vgrep|awk'{print$2}'|xargskillecho"==============hadoop104停止Kibana=============="foriinhadoop102hadoop103hadoop104dossh$i"ps-ef|grep$es_home|grep-vgrep|awk'{print\$2}'|xargskill">/dev/null2>&1echo"==============$i停止Elasticsearch=============="done};;esac8)分发脚本

xsync/home/atguigu/bin/elasticsearch.sh9)进入Kibana的DevTools,然后在操作窗口输入以下内容:

字符串型:text(分词)、keyword(不分词)

数值型:long、integer、short、byte、double、float、half_float、scaled_float

日期类型:date

布尔类型:boolean

二进制类型:binary

范围类型:integer_range、float_range、long_range、double_range、date_range

数组类型:array

对象类型:object

嵌套类型:nestedobject

geo_point(点)、geo_shape(形状)

记录IP地址:ip

实现自动补全:completion

记录分词数:token_count

记录字符串hash值:murmur3

多字段特性:multi-fields

1)创建操作

2)创建文档

3)查询

ES可以自动识别文档字段类型,从而降低用户使用成本

1)直接插入文档

2)查看mapping(birth自动识别为date类型,name识别为text类型)

3)日期类型的自动识别,可以自行配置日期格式,以满足各种需求

(1)自定义日期识别格式

PUTmy_index{"mappings":{"_doc":{"dynamic_date_formats":["yyyy-MM-dd","yyyy/MM/dd"]}}}(2)关闭日期自动识别

PUTmy_index2{"mappings":{"_doc":{"date_detection":false}}}4)字符串是数字时,默认不会自动识别为整形,因为字符串中出现数字时完全合理的,Numeric_datection可以开启字符串中数字的自动识别

分词器主要应用在中文上,在ES中字符串类型有keyword和text两种。keyword默认不进行分词,而text是将每一个汉字拆开称为独立的词,这两种都是不适用于生产环境,所以我们需要有其他的分词器帮助我们完成这些事情,其中IK分词器是应用最为广泛的一个分词器。

1)keyword类型的分词

2)text类型的分词

1)将下载好的elasticsearch-analysis-ik-6.6.0.zip上传至hadoop104机器的/opt/software目录

2)在/opt/module/elasticsearch-6.6.0/plugins目录下创建ik目录(名称随意起)

mkdir/opt/module/elasticsearch-6.6.0/plugins/ik3)解压elasticsearch-analysis-ik-6.6.0.zip至ik目录(若出现未找到unzip命令,则先安装)

sudoyuminstall-yunzipunzip/opt/software/elasticsearch-analysis-ik-6.6.0.zip-d/opt/module/elasticsearch-6.6.0/plugins/ik/4)分发分词器目录

xsync/opt/module/elasticsearch-6.6.0/plugins5)重新启动Elasticsearch,即可加载IK分词器

elasticsearch.shstopelasticsearch.shstart4.3.3IK分词器测试IK提供了两个分词算法ik_smart和ik_max_word,其中ik_smart为最少切分,ik_max_word为最细粒度划分。

1)最少划分ik_smart

2)最细切分ik_max_word

向Elasticsearch增加数据

PUTstudent{"mappings":{"_doc":{"properties":{"class_id":{"type":"keyword"},"stu_id":{"type":"keyword"},"name":{"type":"text"},"sex":{"type":"keyword"},"age":{"type":"integer"},"favo":{"type":"text","analyzer":"ik_max_word"}}}}}PUTstudent/_doc/1001{"class_id":"6001","stu_id":"2001","name":"花和尚","sex":"male","age":"29","favo":"吃肉,羊肉"}PUTstudent/_doc/1001{"class_id":"0821","stu_id":"001","name":"小花","sex":"female","age":18,"favo":"洗脚,海狗人参丸"}如果在关系型数据库Mysql中主键查询数据一般会执行下面的SQL语句

select*fromstudentwhereid=1001;但在Elasticsearch中需要采用特殊的方式

我们通过HTTP方法GET来检索文档,同样的,我们可以使用DELETE方法删除文档,使用HEAD方法检查某文档是否存在。如果想更新已存在的文档,我们只需再PUT一次

health

green(集群完整)yellow(单点正常、集群不完整)red(单点不正常)

status

是否能使用

index

索引名

uuid

索引统一编号

pri

主节点几个

rep

从节点几个

docs.count

文档数

docs.deleted

文档被删了多少

store.size

整体占空间大小

pri.store.size

主节点占空间大小

如果在关系型数据库Mysql中查询所有数据一般会执行下面的SQL语句

select*fromstu;但在Elasticsearch中需要采用特殊的方式

#协议方法索引/类型/_search

GETstu/_search响应内容不仅会告诉我们哪些文档被匹配到,而且这些文档内容完整的被包含在其中—我们在给用户展示搜索结果时需要用到的所有信息都有了

如果在关系型数据库Mysql中查询多字段匹配数据(字段检索)

一般会执行下面的SQL语句

select*fromstudentwheresex='male';但在Elasticsearch中需要采用特殊的方式,并且全值匹配会把查询条件当做一个整体来查。

没有对应的查询条件,因为ik_max_word分词器会把“海狗人参丸”分成以下词组

{"tokens":[{"token":"海狗","start_offset":0,"end_offset":2,"type":"CN_WORD","position":0},{"token":"人参","start_offset":2,"end_offset":4,"type":"CN_WORD","position":1},{"token":"丸","start_offset":4,"end_offset":5,"type":"CN_CHAR","position":2}]}我们会发现并没有“海狗人参丸”这几个字组合起来的词,因此查不到。

分词匹配会按照检索条件将其分词后再去匹配

GETstudent/_search{"query":{"match":{"favo":"海狗人参丸"}}}检索:ES的原理,从ES的倒排索引上检索指定分词对应的数据

切词:海狗人参丸=海狗,人参,人参丸

Select*Fromstudent.xWherefavolike‘%海狗%’orfavolike‘%人参%’orfavolike‘%人参丸%’4.4.5全值匹配和分词匹配结合使用GETstudent/_search{"query":{"bool":{"filter":{"term":{"sex":"female"}},"must":[{"match":{"favo":"海狗人参丸"}}]}}}4.4.6字段模糊匹配检索如果在关系型数据库Mysql中模糊查询多字段数据,一般会执行下面的SQL语句

select*fromstudentwherenamelike'%haha%'但在Elasticsearch中需要采用特殊的方式,查询出所有文档字段值分词后包含"我是程序"的文档

GETstudent/_search{"query":{"fuzzy":{"sex":"fmale"}}}4.4.7聚合检索4.4.7.1单聚合条件聚合查询相当于MySQL中的groupby

GETstudent/_search{"aggs":{"groupByClass":{"terms":{"field":"class_id.keyword","size":10}}}}4.4.7.2多聚合条件此时这两个聚合条件相互之间是没有关联的,比如同班级下的学生和年龄最大的学生

此时这两个聚合条件相互之间是有关联的,比如同班级下年龄最大的学生

如果想实现看某一页的内容,或者跳转到某一页显示出其内容,可以将from的值设置为((页面数-1)*size)

索引别名就像一个快捷方式或软连接,可以指向一个或多个索引,也可以给任何一个需要索引名的API来使用。别名带给我们极大的灵活性,允许我们做下面这些:

1)给多个索引分组(例如,last_three_months)

2)给索引的一个子集创建视图

3)在运行的集群中可以无缝的从一个索引切换到另一个索引

PUTmovie_index{"aliases":{"movie_chn_2021_query":{}},"mappings":{"movie_type":{"properties":{"id":{"type":"long"},"name":{"type":"text","analyzer":"ik_smart"}}}}}2)为已存在的索引增加别名

也可以通过加过滤条件缩小查询范围,建立一个子集视图

POST_aliases{"actions":[{"add":{"index":"student","alias":"student_query","filter":{"term":{"sex":"male"}}}}]}4.5.2查询别名与使用普通索引没有区别

IndexTemplate索引模板,顾名思义,就是创建索引的模具,其中可以定义一系列规则来帮助我们构建符合特定业务需求的索引的mappings和settings,通过使用IndexTemplate可以让我们的索引具备可预知的一致性。

这样做的好处有两个:

1)结构变化的灵活性:因为elasticsearch不允许对数据结构进行修改。但是实际使用中索引的结构和配置难免变化,那么只要对下一个间隔的索引进行修改,原来的索引位置原状。这样就有了一定的灵活性。

PUT_template/template_movie2021{"index_patterns":["movie_test"],"aliases":{"{index_query}":{},"movie_test_query":{}},"mappings":{"_doc":{"properties":{"id":{"type":"keyword"},"movie_name":{"type":"text","analyzer":"ik_smart"}}}}}其中"index_patterns":["movie_test*"],的含义就是凡是往movie_test开头的索引写入数据时,如果索引不存在,那么es会根据此模板自动建立索引。

在"aliases"中用{index}表示,获得真正的创建的索引名。

测试:

GET/test/emps/_searchGET/test/emps/_searchq=*GET/test/emps/_searchq=age:222)查询方式二,使用ES的DSL(特定领域语言)语法,将请求参数附加在请求体中

THE END
1.美食评价app排名,数据整合执行计划钻石版31.58.46经济2、数据质量:APP采用大数据分析技术,确保了评价数据的真实性和有效性,提高了用户对APP的信任度。 3、功能完善:数据整合执行计划钻石版31.58.46功能齐全,满足用户在美食搜索、评价、分享等方面的需求。 4、品牌知名度:作为一款知名的美食评价APP,数据整合执行计划钻石版31.58.46在市场上具有较高的知名度,吸引了大量http://good.junweilai.cn/post/9127.html
2.探索手机应用开发:从零构建美食寻觅APP这款APP将集成定位、餐厅选择、菜单浏览、订单管理等多种功能,让用户能够轻松找到附近的美食,并享受便捷的订餐体验。一、启程:项目介绍与准备 首先,我们需要对整个项目有一个清晰的了解。我们的目标是构建一款集定位、餐厅信息展示、菜单浏览、购物车及订单管理于一体的美食APP。为了实现这一目标,我们将采用React https://baijiahao.baidu.com/s?id=1817564904264077963&wfr=spider&for=pc
3.重塑餐饮新生态:智慧餐饮系统方案的创新实践点餐运营促进业务增长:智慧餐饮系统能够收集并分析顾客数据,帮助企业发现新的市场机会,推动业务持续增长。 二、智慧餐饮系统方案的关键功能 在线预订与支付:顾客可以通过手机APP或网站进行菜品预订、座位预订,并支持多种支付方式,如微信支付、支付宝等,实现便捷支付。 https://www.163.com/dy/article/JIV7QT2U05534XQ0.html
4.2023年菜谱APP行业探究25%;最后是为了探索不同地域和文化的菜谱,占比达到8%。2. 用户行为分析:数据显示,菜谱APP的用户基本上每天使用3-5次,并 且每次的停留时间都在10-30分钟之间。用户在用菜谱APP时最喜欢的功能是搜索和浏览菜谱,占比分别为47%和38%。此外,用户也喜 http://www.360doc.com/content/23/0504/09/80388387_1079167801.shtml
5.掌上菜谱APP的设计与实现设计实现app但国外的菜谱类 APP 相较于其他购物 APP、外卖 APP 而言数量还相对较少。国外大多提供的是私厨平台,即由具备资格认证的专业厨师在各类平台上向需要的用户提供上门服务。当前国外主流的菜谱类网站有美国的 SideChef、德国的 Chefkoch、Kitchen Stories 等。这些平台提供食谱、交流社区,用户可自行搜索需要的菜谱,但国外https://blog.csdn.net/m0_66309026/article/details/138973706
6.内容分享推荐类APP分析(知乎,读读日报&即刻)选择所收藏内容特征较统一的优质收藏夹,推荐给更多用户查看,也可带动用户对该收藏夹下其他问题和回答的关注浏览。 类似于目前多数产品使用的收藏清单(购物类APP的心愿单,菜谱类APP的菜单,音乐类APP的歌单),让具有某种共同特征的内容通过用户收集而自动聚合在一起。 https://www.jianshu.com/p/43d5c87a0c13
7.食谱类APP开发功能以及如何推广食谱数据库:食谱类APP的核心功能之一是提供广泛的食谱数据库,以帮助用户轻松找到感兴趣的美食菜谱,并适应不同的菜系和口味需求。 食材配对:提供食材配对功能,根据用户输入的食材,为用户提供不同搭配的食谱推荐,帮助用户充分利用冰箱的存货,避免浪费。 营养分析:为用户提供各种营养指标数据,例如卡路里、营养素含量、饮食计https://www.epwk.com/meijie/301525.html
8.一种便捷式的智能菜谱推荐系统的设计与实现智能菜谱推荐系统模块使用了协同过滤推荐算法,此算法通过对用户搜索历史和学习菜谱的数据进行挖掘,并分析用户的口味,然后根据不同的偏好对用户进行群组划分并推荐其爱好的菜谱。该算法的原理如图3所示。该推荐算法分为基于用户的协同过滤和基于标记物的协同过滤,先计算出用户对物的喜爱度,然后生成个性化推荐[5]。 https://www.fx361.com/page/2022/0531/10339908.shtml
9.美食菜谱app用户体验旅程图流程图模板ui美食菜谱app用户体验旅程地图,涵盖了一个用户从下载app到成功跟做一道菜的全部体验流程。流程图中包含各个阶段的用户动作与用户阶段目标,并详细分析了该阶段所涉及的重要页面,还分析了用户在当前情景下的情绪曲线波动情况。从以上分析的数据由此得到最终的设计机会点,理清了app的用户需求和设计发力点。 https://www.processon.com/view/664576a842522905d00b63ca
10.下厨房app行业分析下厨房app市场调研下厨房app行业报告下厨房app行业的特征包括商业模式创新、竞争格局稳定、终端市场需求大。 1 商业模式创新 下厨房APP将原有的菜谱分享社区概念扩展至包含社区互动、电商及内容付费的综合平台,遥遥领先其他同类应用。这一变革基于其对用户需求的深刻洞察,即不仅提供菜谱交流,也为用户提供购买食材和学习烹饪技能的全面服务。初始推动是以UGC内容https://www.leadleo.com/wiki/brief?id=65f038201a3317f8474a1168
11.抖音怎么看涨粉中心的数据分析呢帆软数字化转型知识库进入“数据分析”页面后,你可以看到涨粉数据,包括粉丝增长趋势、热门视频的粉丝贡献、粉丝的活跃时间段等详细信息。以粉丝增长趋势为例,这项数据可以帮助你了解短期和长期的粉丝增长情况,使你能够更好地评估内容策略的效果和用户的兴趣点。 一、进入抖音APPhttps://www.fanruan.com/blog/article/384848/
12.APP的目标用户是谁?例如,一个专注于健身打卡的APP,其目标用户可能是注重健康、热爱运动的年轻人;而一个提供菜谱推荐的APP,则更倾向于吸引热爱烹饪、追求生活品质的用户。 通过分析产品功能,我们可以初步勾勒出目标用户的基本特征,包括年龄、性别、职业、兴趣爱好等,形成一个初步的用户画像。 http://www.apppark.cn/t-53648.html
13.菜谱app哪个好用?菜谱大全下载安装菜谱软件排行榜2024菜谱app,主要代指菜谱制作的记录软件,该类软件通过给用户提供各菜品的所需食材、烹饪道具、烹饪方法、烹饪技巧、烹饪时间等详细介绍,通过视频、图片、文字等形式让用户掌握这些美食菜品的制作,在家或者办公的时候都能够用上,所谓“下得了厨房,上得了厅堂”,能够制作http://www.xfdown.com/k/caipuapp
14.多功能美食菜谱APP方案设计毕业设计论文.pdf通过简洁生动的界面设计以及 细的解释,使读者能够初步 了解到基于Android平台的多功能美食菜谱APP发方法和开发过程。 关键词:移动APP, Android菜谱 目录 引言 1 第一章开发准备 2 1. 1背景 2 1. 2需求分析 3 1. 3可行性分析5 第二章系统软件的总体设计 7 2. 1设计思路9 2. 2设计意义9 2. 3 App主要https://max.book118.com/html/2021/0107/8062106036003035.shtm
15.美食菜谱类APP开发盈利模式解析当前人们的衣食住行已经和各种APP应用绑定在一起,像美食菜谱类APP开发,可以让用户做出更加美味的美食,是很多吃货必备的APP应用,所以很多美食菜谱APP涌现出来。但相比其他行业,美食菜谱APP想要盈利,需要培养好用户粘性和对平台的信任度。那么美食菜谱类APP有哪些盈利模式呢? https://www.adinnet.cn/bloginfo/2017_12/blog_3324.html