* 新闻详情- */>
免费预约专业提供网站解决方案
问题由来前些天工作中遇到一个问题:有 60万 条短消息记录日志,每条约 50 字,5万 关键词,长度 2-8 字,绝大部分为中文。要求将这 60万 条记录中包含的关键词全部提取出来并统计各关键词的命中次数。本文完整介绍 ...,问题由来前些天工作中遇到一个问题:有 60万 条短消息记录日志,每条约 50 字,5万 关键词,长度 2- 8 字,绝大部分为中文。要求将这 60万 条记录中包含的关键词全部提取出来并统计各关键词的命中次数。本文完整介绍了我的实现方式,看我如何将需要运行十小时的任务优化到十分钟以内。虽然实现语言是 PHP,但本文介绍的更多的思想,应该能给大家一些帮助。原始 - grep设计一开始接到任务的时候,我的小心思立刻转了起来,日志 + 关键词 + 统计,我没有想到自己写代码实现,而是首先想到了 linux 下常用的日志统计命令 grep。grep命令的用法不再多提,使用 grep 'keyword' | wc -l 可以很方便地进行统计关键词命中的信息条数,而php的 exec() 函数允 许我们直接调用 linux 的 shell 命令,虽然这样执行危险命令时会有安全隐患。代码上伪代码:foreach ($word_list as $keyword) { $count = intval(exec(grep '{$keyword}' file.log | wc -l)); record($keyword, $count) ;}在一台老 机器上跑的,话说老机器效率真的差,跑了6小时。估计最新机器2-3小时吧,后面的优化 都使用的新机器,而且需求又有变动,正文才刚刚开始。原始,原始在想法和方法。进化 - 正则设计交了差之后,第二 天产品又提出了新的想法,说以后想把某数据源接入进来,消息以数据流的形 式传递,而不再是文件了。而且还要求了消息统计的实时性,一下把我想把数据写到文件再统计的想法也推翻了,为了方案的可扩展性,现在的统计对象不再 是一个整体,而是要考虑拿n个单条的消息来匹配了。这时,略懵的我只好祭出了最传统的工具- 正则。正则的实现也不难,各个语言也都封装好了正则匹 配函数,重点是模式(pattern)的构建。当然这里的 模式构建也不难,/keyword1|keword2|.../,用|将关键词连接起来即可。正则小坑这 里介绍两个使用中遇到的小坑:正 则模式长度太长导致匹配失败:P HP 的正则有回溯限制,以防止消耗掉所有的 进程可用堆栈, 最终导致 php 崩溃。太长 的模式会导致 PHP 检测到回溯过多,中断匹配,经测试默认设置时最大模式长度为 32000 字节 左右。php.ini 内 pcre.backtrack_limit 参数为最大回溯次数限制,默认值为 1000000,修改或php.ini 或在脚本开始时使用ini_set(‘pcre.backtrack_limit’, n); 将其设置为一个较大的数可以提高单次匹配最大模式长度。当然也可以将关键词分批统计(我用了这个=_=)。模式中含有特殊字符导致大量warning:匹配过程中发现 PHP 报出大量 warning:unknown modifier 乱码,仔细检查发现关键词中有/字符,可以使用preg_quote()函数过滤一遍关键词即可。代 码上伪代码:$end = 0;$step = 1500;$pattern = array();// 先将pattern 拆成多个小块while ($end count($word_list)) { $tmp_arr = array_slice($word_list, $end, $step); $end += $step; $item = implode('|', $tmp_arr); $pattern[] = preg_quote($item);}$content = file_get_contents($log_file);$lines = explode(
亲 近 消 费 者 和 消 费 者 建 立 关 系 ,对 ,大 家 都 是 朋 友 。 品 牌 到 现 在 ,越 是 亲 民 越 是 和 消 费 者 靠 的 近 ,越 能 做 得 风 生 水 起 。 杜 绝 高 高 在 上 ,当 然 也 杜 绝 无 下 限 跪 舔 。 和 消 费 者 做 朋 友 。 口 碑 营 销 方 法 : 1 、找 到 口 碑 传 播的突破点或临界点。当前,许多口碑营销通常是由产品用户的角色发起的。这个过程中最重要的部分是人的问题。这是口碑营销的第一步,这是不可忽视的重要组成部分。
以下是一些进行SEO优化的一些方法。1、关键词你需要在Shopify商店 中添加关键字,关键字 应与人们在搜索引擎中输入的典型搜索查询相匹配。例如, 有人会 搜索“加拿大的蓝色鞋子”,此搜索中的关键字是“蓝色鞋子”和“加拿大”。为了让店铺在搜索结果中获得更高的排名,你应该尝试找出客户可能会使用哪 些关键字来查找商品,然后确保在为商店撰写产品描述和其他内容时使用这些关键字。在以下四个地方使用关键字:页面标题图片的ALT文本元描述页面内容以下是如 何在这些 地方添加关键字的方法。页面标题:搜索引擎会将标题标签与页面内容进行 比 较,以确定页面标题是否与页面内容相匹配。元描述:搜索结果中在标题标签之后显示 的文本就是元描述,你可以在Shopify中设 置网页、产品页面、收藏页面和博客帖子的元描述。ALT文本:搜索引擎可以读取 你内容中的文本,但无法读取图片,因此你可以使用描述性文字来 帮助搜索引擎找到你的内容。对于有视力障碍的人,Alt文本也是一个重要的辅助功能。页面的正文内容:当你为产品或集合描述、网页或博客文章撰写内容时,要使用包含某些关键字 ,且通俗易懂、独特的表达。2、优化网站结构另一个SE O策略是优化在线商 店的网站结构。一般来说,如果你是在Sho pify网上商店销售商品的话,就不需要担心你的网站结构,因为Shopify内置了SEO优化功能。但你也可以尝试自己动手来优化搜索引擎的网站结构 。为图片使用描述性文件名:在将图片上传到Shopify之前,你要把文件重命名为描述图片内容的文件名。除非说 明图片内容是什么,否则搜 索引擎无法理解图片的内容,因此在将图片上传到Shopify之前,务必要编辑图片的文件名。对内部链接使用描述性链 接文本:在为页面编写正文内容时,你可以链接到站点的不同部分 。链接中的文本应描述你要链接的页面,因为搜索引擎会尝试将链接与页面匹配。例如,你想要将此文章链接到瑜伽垫产品的情况下,建议不要突出显示要链接的整个句子,而是突出显示“瑜伽垫”,因为“瑜伽垫”描述了产品页面上的内容。3、将商店的站点地图提交给Goo gle另一个SEO策略是将商店的站点地图提交给Goog le。 站点 地图是你网站上所有页面的列表,客户可以从你的主页开始导航。将商店的站 点地图提交到Goo g le Search Consol e,有助于Google找到网站上有价值的网 页并将其编入索引,这意味着你的商店会在Google搜索结果中 出现,这样就有可能吸引更多客户。在提交站点地图之前,你需要先 与G oo gle认证你的站点,以确保你 是正确的所有者。4、 隐藏页面Goog le 等搜索引擎会不断抓取互联网,以此搜索新数据。有一个名为robots.txt的文本文件能够告诉搜索引擎你的网站的哪些页面要编制索引,但它也会屏蔽那些可能降低SEO优化的有效性的页面内容。虽然你无法编辑robots.tx t文件的内容,但你仍然可以隐藏未包含在文件中的页面。如何在Google上验证你的网站如果你希望扩大在线商店的 覆盖范围,那么要考虑提交站点地图。首先,你需要禁用在线商店的密码,使用密码意味着用户无法进入在线商店,并且需要输入 密码才能进入该网站,禁用密码保护之后,用户才可以看到在线商店。如果你还没准备好上线 网站,那么请确保在验证网站之后取消使用密码。在Shopify管理中,单击“ 在线商店”,单击“禁用密码” 。或者,单击“首选项”,在“密码保护”部分中,取消选中“启用密码”框,单击“保存”完成接下来,打开Google网站管理员,然后点击Search Console。你可以在两种属性类型中进行选择。如果要使用DNS记录进行验证,请使用“域名”选项。如果你的第 三方域名尚未转移到Shopify,则可以使用此选项。本文将演示使 用URL 前缀选项进行验证的过程。使 用该选项,你 可以使用购买的自定义域名或.myshopi fy.com域名进行验证。如果你使用.myshopify.com域名进行验证 ,并在今后改用自定义域名进行替换验证的话,则需要使用本文中的步骤重新验证站点。输入域名的网址后,再输入包含SSL证书的完整 URL,即https,单击继续。检查验证后,你会看到几种验证网 站的方法。虽然Google Search C onsole建议使用HTML文件进行验证,但本文将演示使用HTML标签的方法。单击箭头以打开HT ML标签验证方式,在这里,你可以看到一行显示“元标 签”的代码,突出显示并复制整个代码。回到Shopify管理,你需要将元标签粘贴到主题代码中,首先单击在线商店,找到要编辑的主题, 然后单击“操作”。粘贴元标签时要注意两件事。1、Google仅对当前主题编制索引。这意味着你需要将元标签粘贴到你将来 要发布的主题 中,或者粘贴到当前主题中。2、Google仅对有效主题编制索引。这意味着只有在当前主题代码中粘贴元标签、并且网站没有密码保护的情况下Google才会开始编制索引。准备好后,单击编辑代码。在“布局”部分中,单击the me.liquid,于在线代码编辑器中打开该文件,找到靠近页面顶 部的标 签head,单击键盘上的回车键以创建新行,并将复制的元标签直接粘贴到head标记下方。单击“保存”完成,返回G oogle Search Consol e,单击HTML标签方法下的验证。如果操作成功,你会看到一个弹出窗口,说明所有权已经过验证。点击查看属性可查看Google Search Console 信息面板的概述。在验证网站后,一定不要删除元标签或删除粘贴的主 题。如果你丢 失了网站验证,则需重复本 文中列出的步骤。你还 可以添加其他验证方法,以确保永远不会丢失网站验证。在Google Search Console中,单击左上角的域名,单击添加属性,然后按照步骤使用其他方法 验证域名。网站验 证完成后,你可以再次在你的网站上启用密码保护,也可以立即提交你的站点地图。如何将站点地图提交到Google Search Console每一个Shopify商店都会自动生成一个sitemap.xml文件,其中包含指向你所有产品、产品图片、页面、集合和博客帖子的链接。验证你的网站后,打开Google网站站长,然后点 击Search Console,在面板中,单击“站点地图”,在添加新站点地图部分下,输入sitemap.x ml。要注意不要输入XML文件名的任何其他变体,sitemap.xml之外的任何内容都会 导致Google显示 错误。单击“提 交”,接下来你会 看到一个 弹出窗口,说明你的站点地 图 已成功提交 。如果在 “状态”下看到任何错误,可以单击以查找有关错误的更多详细信息。此示例显示Google已读取站点地图,但包含常规HTTP错误。单击箭头可以查看 有关此错误的更多详细信息,发生此错误的原因是提交站点地图时在线商店还有密码保护。修复 错误后,你可以通过采用相同的步骤重新提交站点地图,也可以删除站点地图并重新开始。要删除站点地图,请单击右上角的三个点,然后单击“删除站点地图”。通过采用前面的相同步骤再次提交你的站点地图。如果站点地图的状态显示绿色成功, 则表明提交时没有错误。 提交站点地图后,Google会 使用它来抓取你的站点并将其编入索引。要注意的是,Google只对有效网站编制索引,这意味着在从你的站点删除密码保护后,索引过程就开始了。如果你的在线商店的每个页面都没有被抓取或编入索引,也不要担心。Goog le曾表示:“并不是每 一 个网站商店所有页面都会被编入索引,这是很正常的。”此外,商店中 的任何隐藏页面都不会被编入索引,也不会显示在搜索结 果中。索引编制过程需要时间,Google并不能确定对你的网站进