归纳总结:SEO如何关键词的筛选和竞争性分析
优采云 发布时间: 2022-09-25 16:10归纳总结:SEO如何关键词的筛选和竞争性分析
我们一般会选择网站的首页来优化关键词,所以关键词会极大的影响一个网站的成败。实战中关键词的选择一定要实事求是,看似简单的道理,其实操作起来却非常的难。什么是实用的?简单来说就是要选择一个适合自己目前能力的关键词,包括对SEO的掌握、外链资源,以及对关键词所属行业的了解。
1、关键词如何判断
SEO 不仅考验我们的能力,更考验我们的耐力。所以,在选择关键词的时候,一定要有阶段。 网站一开始没有重量,我们也没有资源。这时,我们应该选择索引较低、竞争较少的关键词作为优化目标。这样的关键词优化比较简单,只要我们有足够的内容来源,使用“词无处不在”等策略,一般1到3个月就会见效。一旦关键词上榜,网站有了流量,会给我们很大的鼓励。此时网站也有一定的权重,然后选择指标更高、竞争力更强的关键词加入。
这里有一个问题需要说明。很多站长担心中间改关键词会被搜索引擎打到。事实上,这也太担心了。只要是合理的操作,是不会有任何影响的。作者的建议是循序渐进,比如在第四个月增加一个索引高的关键词,把之前索引低的关键词落地页换成一个栏目页或者一个文章 页面。接下来继续这个操作,将索引高的关键词逐步添加到首页,将索引低的关键词转移到栏目页或文章页进行优化。
总结:关键词选择的一个重要方面是关键词的竞争力。只有知道什么样的关键词更容易优化,什么样的关键词更难优化,才能帮助我们正确确定需要优化的网站关键词 .
2、关键词竞争分析
什么样的关键词更容易优化?有的SEOer认为指标越高越难优化,指标越低越容易优化;一些SEOer认为优化关键词的人越多越好优化难,优化关键词的人越少越容易优化。两种说法都是正确的,但都不是准确的判断。
比如我们搜索了“旅游”的关键词,看到很多搜索结果使用首页优化关键词,说明关键词很竞争的。站长工具的关键词竞争分析工具也是基于这个原理开发的。
“旅游”关键词百度搜索结果
站长工具查询“旅游”关键词竞争力,可见关键词优化难度很高
让我们看一个争议较小的关键词。在搜索引擎中输入“敦煌旅游”关键词,可以看到大部分网站使用栏目页优化关键词,说明关键词是竞争力较弱。这一点从站长工具的分析结果也可以看出。
站长工具中“敦煌旅游”的竞品分析结果
总结:如果通过首页关键词对搜索结果中的第1到20条记录进行优化,通常更具竞争力。如果搜索结果都是通过栏目页或文章优化的,则说明关键词的竞争力较弱。 关键词的竞争分析必须进行,不能想当然。在 SE0 过程中,这个地方值得花时间去研究,一个好的开始是成功的一半。
归纳总结:ClickHouse与Elasticsearch压测实践
1需求分析1.1压力测试对象分析1)什么是ClickHouse和Elasticsearch
ClickHouse 是一个真正的列式数据库管理系统 (DBMS)。在 ClickHouse 中,数据始终存储在列中,包括向量(向量或列块)执行。只要有可能,操作都是基于向量而不是单个值来调度的,这称为“向量化查询执行”,它有助于减少实际的数据处理开销。
Elasticsearch 是一个开源的分布式、RESTful 风格的搜索和数据分析引擎,其底层是开源库 Apache Lucene。可以这样准确地描述:
2)为什么要对他们进行压力测试
众所周知,ClickHouse在基础场景中表现非常出色,性能优于ES,但是我们实际的业务查询很多都是复杂的业务查询场景,甚至是大量的查询。为了保证大促活动高峰业务的稳定性,ClickHouse和Elasticsearch在我们的实际业务场景中是否具有出色的抗压能力,通过这个性能压力测试,我们可以发现系统中的性能瓶颈,并进行针对性的优化完善制度。表现。
1.2 设置压力测试目标
为什么选择这个(queryOBBacklogData)接口?
1)在复杂度上,接口(queryOBBacklogData)查询5次,代码如下:
/**
* 切ck-queryOBBacklogData
* @param queryBO
* @return
*/
public OutboundBacklogRespBO queryOBBacklogDataCKNew(OutboundBacklogQueryBO queryBO) {
log.info(" queryOBBacklogDataCK入参:{}", JSON.toJSONString(queryBO));
// 公共条件-卡最近十天时间
String commonStartTime = DateUtils.getTime(DateUtil.format(new Date(), DateUtil.FORMAT_DATE), DateUtils.ELEVEN_AM, 1, -10);
String commonEndTime = DateUtils.getTime(DateUtil.format(new Date(), DateUtil.FORMAT_DATE), DateUtils.ELEVEN_AM, 1, 1);
// 越库信息-待越库件数&待越库任务数
WmsObCrossDockQueryBo wmsObCrossDockQueryBo = wmsObCrossDockQueryBoBuilder(queryBO,commonStartTime, commonEndTime);
log.info("queryOBBacklogDataCK-wmsObCrossDockQueryBo: {}", JSON.toJSONString(wmsObCrossDockQueryBo));
CompletableFuture preCrossDockInfoCF = CompletableFuture.supplyAsync(
() -> wmsObCrossDockMapper.preCrossDockInfo(wmsObCrossDockQueryBo), executor);
// 集合任务信息-待分配订单
WmsObAssignOrderQueryBo wmsObAssignOrderQueryBo = wmsObAssignOrderQueryBoBuilder(queryBO, commonStartTime, commonEndTime);
log.info("queryOBBacklogDataCK-wmsObAssignOrderQueryBo: {}", JSON.toJSONString(wmsObAssignOrderQueryBo));
CompletableFuture preAssignOrderQtyCF = CompletableFuture.supplyAsync(
() -> wmsObAssignOrderMapper.preAssignOrderInfo(wmsObAssignOrderQueryBo), executor);
// 拣货信息-待拣货件数&待拣货任务数
WmsPickTaskQueryBo wmsPickTaskQueryBo = wmsPickTaskQueryBoBuilder(queryBO, commonStartTime, commonEndTime);
log.info("queryOBBacklogDataCK-wmsPickTaskQueryBo: {}", JSON.toJSONString(wmsPickTaskQueryBo));
CompletableFuture prePickingInfoCF = CompletableFuture.supplyAsync(
() -> wmsPickTaskMapper.pickTaskInfo(wmsPickTaskQueryBo), executor);
// 分播信息-待分播件数&待分播任务
WmsCheckTaskDetailQueryBo wmsCheckTaskDetailQueryBo = wmsCheckTaskDetailQueryBoBuilder(queryBO, commonStartTime, commonEndTime);
log.info("queryOBBacklogDataCK-wmsCheckTaskDetailQueryBo: {}", JSON.toJSONString(wmsCheckTaskDetailQueryBo));
CompletableFuture preSowInfoCF = CompletableFuture.supplyAsync(
() -> wmsCheckTaskDetailMapper.checkTaskDetailInfo(wmsCheckTaskDetailQueryBo), executor);
// 发货信息-待发货件数
WmsOrderSkuQueryBo wmsOrderSkuQueryBo = wmsOrderSkuQueryBoBuilder(queryBO, commonStartTime, commonEndTime);
log.info("queryOBBacklogDataCK-wmsOrderSkuQueryBo: {}", JSON.toJSONString(wmsOrderSkuQueryBo));
CompletableFuture preDispatchCF = CompletableFuture.supplyAsync(
() -> wmsOrderSkuMapper.preDispatchInfo(wmsOrderSkuQueryBo), executor);
return processResult(preCrossDockInfoCF, preAssignOrderQtyCF, prePickingInfoCF, preSowInfoCF, preDispatchCF);
}
2)接口(queryOBBacklogData),一共查询了5张表,如下:
wms.wms_ob_cross_dock
wms.wms_ob_assign_order
wms.wms_picking_task.
wms.wms_check_task_detail
wms.wms_order_sku
3)查询的数据量如下:
select
(ifnull(sum(m.shouldBeCrossedDockQty),
0) -
ifnull(sum(m.satisfiedCrossedDockQty),
0)) as preCrossStockSkuQty,
<p>
count(m.docId) as preCrossStockTaskQty
from
wms.wms_ob_cross_dock m final
prewhere
m.createTime >= '2021-12-03 11:00:00'
and m.createTime = '2021-12-03 11:00:00'
and m.createTime = '2021-12-03 11:00:00'
and m.shipmentOrderCreateTime = '2021-12-03 11:00:00'
and m.shipmentOrderCreateTime = '2021-12-03 11:00:00'
and m.shipmentOrderCreateTime