问题标签 [vespa]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
search - Yahoo Vespa 在运行时创建搜索定义
我想知道“vespa 平台”中是否有任何 API 可用于在运行时创建搜索定义 (sd)。
这是一项要求,因为我将索引的文档取决于前端应用程序中的用户输入。
vespa - 如何在搜索结果中包含导入的字段?
我正在使用文档引用将父字段导入子文档。虽然对父字段的搜索有效,但父字段本身似乎不包含在搜索结果中,只有子字段。
要使用文档中的示例,在 using或直接检索via时salesperson_name
不会出现在fields
条目中。id:test:ad::1
query=John
id:test:ad::1
GET
这是我的文档模型的简化配置:
搜索定义
person.sd - 父级
event.sd - 孩子
文件
p1 - 人
e1 - 事件
查询结果
curl -s "http://localhost:8080/search/?yql=select%20*%20from%20sources%20*where%20name%20contains%20%22p1%22%3B" | python -m json.tool
如您所料,这将返回 e1 和 p1,因为name
两者都存在。但的fields
不e1
包括name
。
kubernetes - kubernetes gce 入口路径通配符不代理正确的 uri(在容器内工作)
无法卷曲/使用带有一些 slug 的 rest API 的原因可能是什么,例如 example.com/application/v2/xxxx。我使用的 docker 图像是来自 http://vespa.ai/ https:/的应用程序/github.com/vespa-engine/docker-image/blob/master/Dockerfile
我已经正确设置了节点端口和入口
我尝试了各种,例如主机上的默认后端:
或显式使用通配符路由:
奇怪的是,在外部(集群外)做 curl: curl -s --head http://example.com/ApplicationStatus确实 返回 statusCode 200 OK
执行 curl -s --head http://example.com/application/v2/tenant/ 从应用程序返回 BAD_REQUEST。
“错误代码”:“BAD_REQUEST”,“消息”:“ http://example.com/application/v2/tenant/ ”
exec 进入容器并执行 curl -s --head http://localhost:19071/application/v2/tenant/ works..
因此,要么应用程序以某种方式匹配来自入口时不正确的主机名,要么存在一些其他问题,即完整的 uri 没有被代理。
该应用程序的源代码目前对我来说太大而无法理解,但查看源代码 https://github.com/vespa-engine/vespa/blob/f76406b88df47f6bdbf9d24feda4c9ff55c63e06/orchestrator/src/main/java/com/yahoo /vespa/orchestrator/resources/HostSuspensionResource.java 它可能解释了为什么它返回错误消息。
其他一切似乎都有效,配置服务器和应用程序。
是应用程序本身还是 kubernetes 可能是这里的问题?
vespa - 是否有适用于 Debian 机器的 Vespa 发行版?
当前的 Vespa 发行版 rpm 适用于 RedHat linux。有没有什么简单的方法可以在 Debian Linux 机器上设置多节点 vespa 集群?
vespa - 我可以匹配字符串中的重要关键字吗?
假设用户将此搜索字符串输入到新闻搜索引擎:
“哎呀,小唐纳德特朗普又做了一次(维基解密版):政治 - 粘贴”
想象一下,我们有一个新闻标题数据库和一个“重要人物”数据库。这里的目标是:如果搜索字符串包含重要人物,则返回包含此“子字符串”的结果,其排名高于不包含它的结果。
使用 Yahoo Vespa 引擎,我如何将充满人名的数据库与长新闻标题字符串进行匹配?
*我希望这是有道理的,对不起大家,我的英语不太好:(谢谢!
vespa - 为什么 vespa.ai 最终会因为没有 JSON 对象可以在 k8 上解码而失败
所以 Vespa 非常酷和有用,但它真的很难掌握:/ 例如,我现在已经在 k8 上将它容器化并部署了我的应用程序。(在一个 pod/节点中配置和搜索/存储节点,节点发行版是谷歌自己的容器优化操作系统)。我可以在几分钟内通过 REST/document API 放置文档和查询文档……太棒了!但是几分钟后它只是进入了一些错误状态。
我必须重新部署应用程序并再次激活它才能开始工作。
执行到 pod/container 和 vespa-logfmt -l all -s fmttime,service,message
说(我不知道这里发生了什么,但有些东西进入了失败状态)。为什么要更新配置服务器并重新部署所有应用程序等?我可以协助调试正在发生的事情的任何其他日志?
vespa - 引用文档是否比在文档中具有字段数组类型更优化查询?
假设我们有一个人和活动搜索定义。要查找一个人曾经做过的活动,可以在活动 sd 中使用数组类型和 match:word(许多人可以共享同一个活动),然后在查询中简单地搜索该人。
这对于查询性能是否比在活动 sd 中包含用户 ID 或名称的引用更好?
类似于常见的 NoSQL 文档数据库查询,如果应该将其包含在文档本身中或使用链接文档。
谢谢!
vespa - 自定义搜索器 - 混合来自不同来源的点击
我们需要“混合来自不同来源的命中”,根据您的文档,建议在 JAVA 中编写自定义搜索器。在 Github 上的某个地方有这个演示吗?我什至不知道从哪里开始:(我知道我可以创建搜索“链”,最好是异步的,然后在返回它们之前在 JAVA 中混合结果......但是我将如何处理分页、限制......等等?这一切似乎很复杂,对于那些甚至不太了解 JAVA 的人来说。所以,我希望有人已经为此编写了一个演示?拜托?有人吗?
太感谢了
编辑使我的问题更清楚:
我们正在编写一个从各种网站获取数据的搜索引擎。一些网站有 1000 万个可索引项目,而其他网站只有 100,000 个。当我们将结果呈现给最终用户时,我们希望包括来自所有来源的结果(当匹配适用时)。假设我们抓取的每个网站都有 10 个结果,因此它们都在页面上获得同等数量的关注。如果我们不进行自定义混合,那么会发生的情况是,拥有最多商品的最大网站会赢得我们所有的流量。
我知道我们可以向 VESPA 发送 10 个单独的查询,并将结果混合到我们的前端,但这似乎非常低效。因此,“客户搜索器”的问题。太感谢了 !
vespa - Vespa 是否支持动态字段?
我正在寻找任何选项,例如 Vespa 中的动态字段 (Solr)。我需要在现有架构中添加新字段,而无需重新部署整个应用程序。
Vespa http://docs.vespa.ai/documentation/search-definitions.html#modify-search-definitions的文档中提到了与此相关的任何内容
提到我们可以添加一个新字段并运行vespa-deploy prepare
and vespa-deploy activate
。但这不是重新提交整个申请吗?什么是至少在开销上实现它的选项?
docker - 每个主机有多个 vespa docker 容器?
PB:我尝试在两个不同的主机上部署 5 个 vespa 容器,但我没有成功启动我的 vespa 节点。
我在第一台主机上分别用端口 8080、8081、8082 命名了我的 3 个容器 vespa0、vespa1、vespa2,分别用端口 8080、8081 命名了 vespa3、vespa4
我以这种方式启动 vespa 容器
然后我部署应用程序:
当我写命令时
集群检测到两台主机上的节点,但只有一台启动。
特此配置应用程序
主机.xml
服务.xml
你有什么技巧可以让它发挥作用吗?:)