问题标签 [laravel-scout]
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.
laravel-5.4 - Laravel Scout 中的 toSearchableArray() 覆盖所有者
一个用户可以创建、编辑和删除模型。所有其他用户也可以更新该模型(通过喜欢它)。现在,当不是条目创建者的用户更新模型时,创建者会被更新它的用户覆盖。
基本上,这就是将数据推送到 Algolia 索引时发生的情况:
当记录由与创建者不同的用户更新时,$user 不是创建者,而是更新记录的人。这样,创建者就会被覆盖,这是我需要避免的。
是否可以只更新索引记录中的单个值,而不是整个记录?我可以看到更新模型的唯一方法是在控制器中执行以下操作:
但这会更新整个记录,这与创建者用户 ID 不同。
laravel - 断言模型不可搜索
我正在构建一个系统来管理我公司的一些文章,使用 Laravel 和 Laravel Scout 以及 Algolia 作为搜索后端。
其中一项要求规定,每当文章中的某些内容发生更改时,都会保留备份,以便我们可以证明某些信息是在特定时间显示的。
我通过在更新之前克隆现有文章及其所有关系来实现这一点。这是文章模型上的方法:
问题是$replica->save()
线路。我需要先保存模型,以便在同步关系时它有一个 ID。
但是:阻止 scout 索引模型的唯一原因是模型的archived_at
字段是否设置为任何非null
值。但由于这是原始模型的克隆,因此该字段null
按预期设置,并且仅在克隆过程完成后更改。
问题: Scout 正在将克隆模型同步到 Algolia,所以我在那里有重复。我知道如何通过将克隆调用包装到withoutSyncingToSearch
(https://laravel.com/docs/5.6/scout#pausing-indexing)回调中来解决这个问题。但是由于这非常重要并且错误已经存在,我希望有一个单元测试来支持我,它确实没有同步到 Algolia。我不知道如何测试这一点,并且寻找一种测试 Scout 的方法只会导致答案告诉我不要测试 Scout,而是我的模型可以被索引等。
问题:如何创建一个单元测试来证明克隆模型没有同步到 Algolia?
目前我正在考虑创建一个自定义的 Scout 驱动程序进行测试,但对于测试一个单一的功能来说,这似乎是一种过大的杀伤力。
laravel - Laravel Scout 队列性能
因此,根据Laravel Scout Doc,启用 Queue 应该会提高性能,并且应该将数据同步变为异步。我已将我的队列驱动程序设置为 Amazon SQS,并且我可以确认我的侦察同步正在通过它并且它正在工作。但是,与 false 相比,当队列设置为 True 时,我的性能似乎更差。
为了测试,我做了一个简单的端点,没有队列,响应时间约为 0.1 秒,队列约为 0.4 秒。这对我来说很奇怪。我已将日志放在我的代码中,它似乎并没有异步执行。Scout 或 Algolia 似乎存在问题。
我想知道是否有人以前经历过这种情况或知道发生了什么。
PS:我的球探正在使用 Algolia
php - 带有弹性搜索的 Laravel scout - 响应缓慢
这是我的场景:
我正在开发一个基于Laravel 5.5的应用程序,该应用程序使用Scout和ElasticSearch 驱动程序来执行研究。Laravel 应用程序正在使用内置服务器(php artisan serve)运行。
我的 elasticsearch 集群使用Laradock environment在docker上运行。我有一个包含以下项目的索引:
该索引包含大约 1000 个项目,如上一个。我正在使用这样的查询测试性能:
使用 POST 方法直接调用 elasticsearch 实例的性能结果: http://localhost:9200/artworks/_search?pretty=true --> ~50ms
调用我的应用程序的性能结果: http://localhost:8000/api/v1/artworks/search?query=Manuela Gulgowski --> ~3500ms
两种方法每页返回 10 个元素。
我的方法很简单:
有人知道我是否遗漏了什么或者我可以通过哪种方式提高性能? 我完全理解使用我的应用程序 api 我无法获得 50 毫秒的响应,但我希望它至少会在 600-700 毫秒内响应。
更新 经过大量测试,我发现我的应用程序有时会在 ~900 毫秒内响应,有时在 ~3500 毫秒内响应,这种延迟差异是由 Scout 驱动程序中的分页引起的。
我要进一步调查。
php - Laravel Scout algolia 非对象
我正在使用 laravel 创建一个 crud 应用程序,并使用 scout 和 algolia 来执行搜索功能。但是,当我执行 scout:import "App\Majors" 时,它会引发“尝试获取非对象的属性”错误。下面是我的模型。
laravel - 调用未定义的方法 Illuminate\Database\Query\Builder::makeAllSearchable() Laravel Scout Algolia
我刚开始使用 Laravel Scout 和 Angolia 驱动程序。我在导入模型时遇到问题。起初,我导入了 App\Agency,它被导入了。但是当我尝试导入模型的其余部分时,它会产生错误Call to undefined method Illuminate\Database\Query\Builder::makeAllSearchable()
第一次进口
和另一个进口
我把使用 Searchable;在模型中。
laravel - 递归地将模型添加到 Scout Laravel
我有三张桌子
我希望能够在 AkteController 中搜索 Ms->attribute。
我将 lvs 添加到可搜索数组:
是否可以将 lvs.M 添加到 Akte SeachableArray?
laravel - Laravel Scout 导入现有数据不起作用
那里,
我安装了 Laravel Scout。如果我现在创建一条新记录,它将被正确导入 Algolia。编辑和删除也有效。但现在我想导入所有现有的组织。当我运行命令时:
但是,没有组织被写入索引。我还需要在某处指定任何内容吗?
laravel - Elasticsearch 和 Laravel scout-elasticsearch-driver 返回一个空响应
首先,我将 scout-elasticsearch-driver 用于 Laravel Scout:https ://github.com/babenkoivan/scout-elasticsearch-driver
我一步一步地按照自述文件,创建索引,迁移索引,配置映射并User::search()->get()
返回一个空数组。
显然我的数据库已迁移和填充。
我想通过以下方式搜索用户:
- 他的名字
- 他的姓氏
- 他的昵称
所以我创建了一个IndexConfigurator:
创建了一个SearchRule:
相应地配置了我的用户模型:
我错过了什么吗?
编辑1: 对elasticsearch集群的curl请求的结果
编辑2:
产生的查询的打印:
编辑 3 Laravel scout 和 elasticsearch 驱动程序配置:
scout_elastic.php
侦察兵.php
编辑 4:更新了弹性搜索映射
给出: