Php 使用Laravel Scout设置Algolia索引属性
我很喜欢与Laravel Scout和Algolia一起工作,我能够索引我的内容。(我正在使用Algolia JS库执行搜索) 不过,我想获得搜索结果的方面,但这需要在服务器端完成,我不知道如何使用scout实现这一点。例如,如果我想允许检索facets作者和类型,我想设置以下属性:Php 使用Laravel Scout设置Algolia索引属性,php,laravel,algolia,Php,Laravel,Algolia,我很喜欢与Laravel Scout和Algolia一起工作,我能够索引我的内容。(我正在使用Algolia JS库执行搜索) 不过,我想获得搜索结果的方面,但这需要在服务器端完成,我不知道如何使用scout实现这一点。例如,如果我想允许检索facets作者和类型,我想设置以下属性: $index->setSettings(array("attributesForFaceting" => array("authors", "type"))); 我可以在JS中这样做,但不知何故,Al
$index->setSettings(array("attributesForFaceting" => array("authors", "type")));
我可以在JS中这样做,但不知何故,Algolia强烈建议在后端客户端上这样做-Laravel Scout为我:
“请考虑使用后端客户端更改索引设置”
由于不熟悉Laravel Scout,我只在评论部分给出了一般性建议:
- 您不应将API密钥与搜索以外的其他ACL一起公开给用户
- Algolia中的设置通常与数据索引同时设置
setSettings
方法来实现您想要的
同时,您可能可以扩展
AlgoliaEngine
特性,自己添加此方法,或者只需要一个小脚本来设置这些设置。Algolia告诉您在后端执行此操作的原因是您需要一个管理API键来设置设置。如果您在前端公开此项,任何有权访问此页面的人都可以检索此API密钥并更改索引。这就是为什么您应该在前端使用搜索API键的原因。但是,没有任何东西阻止您编写JS脚本,在您将此脚本保持为私有的条件下,使用管理API键并设置设置(可能为数据编制索引)。另一条评论:“不过,我想获取搜索结果的方面,但这需要在服务器端完成“-您应该在后端为faceting设置属性
,但是facets检索应该在前端完成。谢谢@Jerska。我了解该密钥的潜在问题,并使用cusom ACL创建了一个新密钥,允许通过API进行搜索和索引设置。有了这个,我可以通过JS设置索引属性。也就是说,我宁愿按照你的建议和algolia的建议去做,也就是说,在后端这样做。但是我不明白什么时候应该这样做,也就是说,在搜索生命周期中,我应该什么时候在后端设置属性,特别是因为搜索是通过JS发送和返回的?谢谢你的回答。我将致力于扩展AlgoliaEngine,以便为索引设置属性。这应该一直有效,直到有一个更新版本的scout。