如何建设小型直播平台_为小型网站创建更准确的搜索结果!

news/2024/5/11 0:04:27/文章来源:https://blog.csdn.net/dfsgwe1231/article/details/107270362

如何建设小型直播平台

在上一篇文章中,我在一个小型站点上工作,您可以在其中搜索唐纳德·特朗普最近的演讲,并获得有关他使用某些单词或短语的频率,何时使用以及最常说某些话的统计信息。 作为参考,他是我正在构建的网站的工作原型:

https://trumpspeechdata.herokuapp.com/

现在,假设我要添加一个功能,以便您可以搜索一个主题,并返回有关该主题的所有发言。 现在,您是否曾经在给定站点上搜索过某些内容,而搜索结果与您的实际想法不太接近? 我们可能以前都曾经发生过。 如果我们有成千上万的数据,我要提出的建议可能不可行,但是对于像本网站这样的较小数据块,这既合理,又使我们可以返回更准确的搜索结果。

如果您想继续,这是我到目前为止的数据:

https://www.dropbox.com/s/u4vuwazx609uvvw/trumpspeeches.json?dl=0

我们当前的数据结构如下所示:

{
"speechtitle": "Title of Speech",
"speechdate": "Date of Speech",
"speechlocation": "Location of Speech",
"text": "Entire transcript of Speech",
}

如果用户搜索特定主题,则如果他们的搜索与语音主题匹配,我们可能希望将所有数据返回给用户。 首先,让我们使用以下用户故事:

鲍勃(Bob)的用户搜索“预算”,因此他可以查看唐纳德·特朗普(Donald Trump)在《预算》上的讲话。

我们可以这样做的一种方法是:

let matchingSpeeches = [];
for (var i = 0; i < api.length; i++) {
if(api[i].speechtitle.indexOf(inputValue) > -1) {
matchingspeeches.push([
api[i].speechtitle,
api[i].speechdate,
api[i].speechlocation,
api[i].text,
])
}
}

这基本上是说:“如果语音标题包含要搜索的单词或短语,则将其推入匹配的语音数组中”。 然后,我们将能够将数组的结果格式化为User。 回到鲍勃,这会给他带来想要的东西吗? 是的,只要演讲标题中包含“预算”即可。 但是,如果有关于预算案的演讲,但预算未出现在演讲标题中怎么办? 抱歉,鲍勃,你是SOL。

也许我们可以做与上述相同的事情,但也包括对语音文本的搜索,如下所示:

let matchingSpeeches = [];
for (var i = 0; i < api.length; i++) {
if(api[i].speechtitle.indexOf(inputValue) > -1 || api[i].text.indexOf(inputValue) > -1) {
matchingspeeches.push([
api[i].speechtitle,
api[i].speechdate,
api[i].speechlocation,
api[i].text,
])
}
}

这里我们说的是:“好吧,如果搜索值出现在语音标题或语音文本中,我们会将其推入数组。” 更好吧? 好吧,是的,不是。 如果演讲只涉及堕胎或枪支管制,却只提及预算一次该怎么办? 演讲根本不是关于预算的,但我们仍将其退还给鲍勃,让他整理一下那堆烂摊子。 或者,如果演讲是关于预算的,但在演讲中使用了另一个词,例如“支出”,却没有真正提及“预算”怎么办? 我们可以将用户Bob置于一种情况下,即他得到了有关堕胎的演讲,但没有得到有关Spending的演讲。 对于我们的最终用户Bob来说,这不是一件好事。 这是另一个想法。 让我们在数据结构中添加一个称为“标签”的字段。 然后,对于每个演讲,我们可以添加主题标签。 例如,让我们从JSON数据中获取以下条目:

{
"speechtitle": "Remarks by President Trump at Tax Reform Event",
"speechdate": "September 2017",
"speechlocation": "Indiana",
"text": "speech text here",
}

我们可以将其修改为以下内容:

{
"speechtitle": "Remarks by President Trump at Tax Reform Event",
"speechtags": ["budget", "taxes"],
   "speechdate": "September 2017",
"speechlocation": "Indiana",
"text": "speech text here",
}

然后,当Bob进行搜索时,我们可以使用之前的代码,然后遍历这些标签,并返回与搜索输入匹配的标签。 但是,尽管这可能更有针对性,并且从理论上讲我们的搜索结果更好,但我们仍然可能在这里遇到问题。 例如,如果鲍勃搜索“支出”而不是“预算”,该怎么办。 同样,即使它们很接近,由于查询不匹配,该语音也不会发送给bob。 因此,这是我们可以解决该问题的一种方法。 我们要做的是归纳出许多受欢迎的搜索词。 因此,如果用户搜索“支出”,“预算”,“税制改革”或“赤字”,我们仍然会向用户发送带有“预算”标签的结果,因为这非常匹配。 我们要做的是建立一个单词Object。 然后,我们可以将所需的任何单词放入对象中。 该结构将如下所示:

var mapObj = {
"a" : "b",
"c" : "b",
"d" : "b",
"e" : "b",
}

这里的想法是,如果用户Bob搜索“ a”,我们将给他“ b”。 如果他搜索“ c”,“ d”或“ e”,我们仍将其赋予“ b”。 这就是我们上面描述的。 基本上,如果他搜索“支出”,我们将返回“预算”。 但是,如果他搜索“税制改革”或“赤字”或“预算”,我们仍将返回包含“预算”的结果,因为这仍然是一个很好的匹配。

现在,我们需要添加一些正则表达式以匹配输入字符串。 代码如下所示:

var mapObj = {
"spending" : "budget",
"tax reform" : "budget",
"deficit" : "budget",
"budget" : "budget",
};
var re = new RegExp(Object.keys(mapObj).join("|"), "gi");
keyWord = str.replace(re, function(matched) {
return mapObj[matched.toLowerCase()];
});

我们使用正则表达式来匹配用户搜索的内容,然后将其替换为其他内容。 因此,现在我们可以在前面的代码中使用变量“ keyWord”,并使用我们创建的speechtags字段:

let matchingSpeeches = [];
for (var i = 0; i < api.length; i++) {
if(api[i].speechtags.indexOf(keyWord) > -1) {
matchingspeeches.push([
api[i].speechtitle,
api[i].speechdate,
api[i].speechlocation,
api[i].text,
])
}
}

现在,正如我前面提到的,这可能无法在很大的范围内很好地工作,但是我认为在这种情况下它可以工作,因为我们的范围非常有限。 因为主题是政治,所以用户可能输入的搜索词太多。 而且,如果我们没有得到与他们输入的任何匹配,我们总是可以在其中放置一些代码来返回给用户。 例如,如果Bob搜索“鸡肉汤”,我们可能没有很多数据可用。 由于可能的搜索词受到一定程度的限制,因此我们可以修改搜索对象以包含尽可能多的可能性,以匹配我们正在使用的所有标签,例如:

var mapObj = {
"spending" : "budget",
"tax reform" : "budget",
"deficit" : "budget",
"budget" : "budget",
        "abortion" : "abortion",
"women's rights" : "abortion",
"pro life" : "abortion",
"pro choice" : "abortion",
        "healthcare" : "healthcare",
"obamacare" : "healthcare",
"health reform" : "healthcare",
"medicaid" : "healthcare",
};
var re = new RegExp(Object.keys(mapObj).join("|"), "gi");
keyWord = str.replace(re, function(matched) {
return mapObj[matched.toLowerCase()];
});

然后,我们可以返回并在每个语音中添加标签,以匹配我们正在使用的关键字。 我们可以手动执行此操作,特别是在我们的数据集很小的情况下,或者可以使用JavaScript或Python或其他任何方法,但在此不做介绍。 同样,即使在这种情况下,我们仍然会遇到一些问题,但是如果您正在寻找一种快速的方法来使返回的结果更具针对性,这也不错,尤其是对于较小的数据集。

伊桑·贾瑞尔
我的背景是平面设计,在过去的十年中,我从事数字和印刷设计工作,其工作是...

翻译自: https://hackernoon.com/creating-more-accurate-search-results-for-small-sites-436e64da79b6

如何建设小型直播平台

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.luyixian.cn/news_show_728162.aspx

如若内容造成侵权/违法违规/事实不符,请联系dt猫网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

为小型网站创建更准确的搜索结果!

在上一篇文章中&#xff0c;我在一个小型站点上工作&#xff0c;您可以在其中搜索唐纳德特朗普最近的演讲&#xff0c;并获得有关他使用某些单词或短语的频率&#xff0c;何时使用以及最常说某些单词的统计信息。 作为参考&#xff0c;他是我正在构建的网站的工作原型&#xff…

用python和karrigell做网站

用python和karrigell做网站转自&#xff1a;http://www.cnblogs.com/czh-liyu/archive/2008/04/21/1164341.html从今天起,和大家一起学习用python/karrigell做网站.对于能搜到这篇文章的兄弟,一定是对karrigell是什么有大致的了解了,但是如果不知道也没关系.这个单词虽然很复杂…

如何主机屋中发布网站?

2019独角兽企业重金招聘Python工程师标准>>> 最近一直忙于学习php&#xff0c;觉得自己没有什么好写的。就在昨天&#xff0c;学习了一下发布自己的网站&#xff0c;感觉收获很多&#xff0c;再次记录下具体的过程。 第一、在网站上找到主机屋。链接网址:http://ww…

Confluence 6 创建站点的导出文件

2019独角兽企业重金招聘Python工程师标准>>> 希望为你的站点创建一个 XML 导出文件&#xff1a; 进入 > 基本配置&#xff08;General Configuration&#xff09; > 备份和恢复&#xff08;Backup & Restore&#xff09;。选择 归档到备份目录&#xff0…

用java做网站,java连接数据库并查询输出到页面

java web的后缀名是jsp&#xff0c;所以咱们要有一个jsp的开发环境&#xff0c;我这用的是jspStudy 自行百度。这软件是一个集成开发环境&#xff0c;安装启动后即可使用&#xff0c;集成了tomcat和mysql数据库首先我们先新建一个首页文件 index.jsp [java] view plaincopy <…

aws创建新的lambda_使用AWS Lambda在半小时内创建高度可扩展的网站监控服务

aws创建新的lambdaLambda函数确实是一项很棒的技术 &#xff0c;如果您还没有读懂我的理论&#xff0c;即无服务器 &#xff08;尤其是AWS Lambda&#xff09;将在2018年占领世界&#xff0c;那么请在此处查看&#xff1a; 无服务器计算将如何在2018年改变世界 无服务器计算是…

使用AWS Lambda在半小时内创建高度可扩展的网站监控服务

Lambda函数确实是一项很棒的技术 &#xff0c;如果您还没有读懂我的理论&#xff0c;即无服务器 &#xff08;尤其是AWS Lambda&#xff09;将在2018年占领世界&#xff0c;那么请在此处查看&#xff1a; 无服务器计算将如何在2018年改变世界 无服务器计算是一个相当新的概念&a…

此时无法创建您的帐户_当您在网站上创建帐户时,真正发生了什么?

此时无法创建您的帐户编码语言的简单介绍。 斯坦利戴 &#xff08; Stanley Dai&#xff09;摄影 认为编码不是一种技能&#xff0c;而是一种语言。 本系列将解释一些与编码相关的关键字&#xff0c;同时帮助您更好地了解与网站和应用程序交互时幕后发生的事情。 本系列的目的…

当您在网站上创建帐户时,真正发生了什么?

编码语言的简单介绍。 斯坦利戴 &#xff08; Stanley Dai&#xff09;摄影 认为编码不是一种技能&#xff0c;而是一种语言。 本系列将解释一些与编码相关的关键字&#xff0c;同时帮助您更好地了解与网站和应用程序交互时幕后发生的事情。 本系列的目的不是要教您如何编码&am…

ssh网站服务器管理器,ssh secure shell client远程登录管理服务器操作步骤

SSH Secure ShellClient这款系统工具很多用户喜欢,方便快捷很适用于办公。下面给大家分享一下ssh secure shell client远程登录管理服务器操作步骤&#xff0c;希望大家喜欢。ssh secure shell client远程登录管理服务器操作步骤大家可以去官网下载(http://ultra.pr.erau.edu/~…

一篇博客让你学会部署社交网站( SVN+nginx+PHP+MySQL+MFS 内含所有源码包)

根据公司要求&#xff0c;实施过程大致如下&#xff1a;1 部署SVN服务器&#xff0c;为PHP程序员创建repo目录的访问账户&#xff0c;通知程序员可以导入代码2 部署nginx服务器3 部署PHP服务器4 部署MySQL主从服务器&#xff0c;根据程序员的要求创建数据库和表5 部署MFS6 发布…

Nginx proxy代理网站常用优化配置

#proxy代理网站常用优化配置如下&#xff0c;将配置写入新文件&#xff0c;调用时使用include引用即可 #[rootNginx ~]# vim /etc/nginx/proxy_params proxy_set_header Host $http_host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_a…

WordPress SEO ☞ WordPress网站终极优化指南

原文地址&#xff1a;http://www.eastdesign.net/wordpress-seo/ 最新消息&#xff0c;东方设计学院 WordPress SEO 系列视频教程正在持续更新中&#xff0c;目前为了不至于让视频传播过于泛滥&#xff0c;设置了登陆权限&#xff0c;有兴趣查看的用户可以简单填写一个索取测…

Nginxproxy代理网站常用优化配置_马立杰_新浪博客

#proxy代理网站常用优化配置如下&#xff0c;将配置写入新文件&#xff0c;调用时使用include引用即可#[rootNginx ~]# vim /etc/nginx/proxy_paramsproxy_set_header Host $http_host;proxy_set_header X-Real-IP $remote_addr;proxy_set_header X-Forwarded-For $proxy_add_x…

一次网站登录慢故障排查

昨天上午到公司&#xff0c;研发发邮件通知说有用户反映登录我们A站速度很慢&#xff0c;登录进去之后的操作都是正常的&#xff0c;所以基本可以排除网络与服务器压力大的因素。那么接下来就是看看数据库与缓存是否成为瓶颈&#xff0c;结果没有什么发现&#xff0c;毕竟A站是…

做一个普通网站到底有多难-100元+7天=3个站点

点击查看原文:做一个普通网站到底有多难-100元&#xff0b;7天&#xff1d;3个站点 oh 首先提醒你&#xff0c;这是一篇软文。什么&#xff0d;我不会写软文&#xff0c;也对&#xff0c;这是一篇你可以了解我做一个网站的简单省钱的过程&#xff0c;最起码这个一篇有用的软文。…

大学生网页作业之-个人主页、校园网站

作业要求 1、共用头部文件header.html&#xff0c;其它页面用iframe调用 2、首页文件模块丰富&#xff0c;要求带有姓名、学号、个人简介 3、要有注册页面&#xff0c;注册页面姓名、密码、邮箱&#xff0c;姓名要求A-Z、0-9和下划线组合&#xff0c;密码最少为6位&#xf…

大学生期末大作业之购物网站

作业 要求&#xff1a; 建立一个购物网站 1、至少8个网页&#xff08;页面之间相互链接&#xff09; 2、要求有表格布局的页面 3、要求有DIVCSS的页面&#xff08;左中右浮动布局、上中下布局&#xff09; 4、要求有图片轮播图效果&#xff08;改变属性行为&#xff09;和…

web网站加速之CDN(Content Delivery Network)技术原理

在不同地域的用户访问网站的响应速度存在差异,为了提高用户访问的响应速度、优化现有Internet中信息的流动,需要在用户和服务器间加入中间层CDN. 使用户能以最快的速度&#xff0c;从最接近用户的地方获得所需的信息&#xff0c;彻底解决网络拥塞&#xff0c;提高响应速度&…

node抓取58同城信息_如何使用标准库和Node.js轻松抓取网站以获取信息

node抓取58同城信息网络抓取工具是一种工具&#xff0c;可让我们选择网站的非结构化数据并将其转换为结构化数据库。 那么&#xff0c;网络刮板将在哪里派上用场呢&#xff1f; 我列出了我最喜欢的用例&#xff0c;以使您对启动自己的应用感到兴奋&#xff01; Quora上的这个问…