多索引搜索简介
联合搜索通过跨多个索引搜索来提升用户体验和结果相关性。
Meilisearch v1.1 引入了 /multi-search
端点。借助此端点,用户现在可以通过将多个搜索查询捆绑到单个 HTTP 请求中,从而在一个或多个索引上发送多个搜索查询。本质上,/multi-search
端点为 联合搜索 铺平了道路。
联合搜索在 Meilisearch 1.10 及更高版本中可用。
使用 Meilisearch 进行多索引搜索
联合搜索以 277 票成为最受欢迎的功能之一。我们很高兴最终宣布该功能的第一阶段。
我们引入了一个 /multi-search
路由,允许通过单个 HTTP 请求在多个索引中进行搜索。假设我们有两个索引:movies
和 actors
。使用 /multi-search
端点,我们可以搜索女演员的名字,并在搜索结果中检索她的传记和电影。
例如,以下多搜索请求
curl -X POST 'https://127.0.0.1:7700/multi-search' -H 'Content-Type: application/json' --data-binary '{ "queries": [ { "indexUid": "movies", "q": "Kate Winslet", "limit": 1 }, { "indexUid": "actors", "q": "Kate Winslet", "limit": 1 } ] }'
响应将包括每个搜索索引的一组搜索结果
{ "results": [ { "indexUid": "movies", "hits": [ { "title": "The Reader", "overview": "The story of Michael Berg, a German lawyer who, as a teenager in the late 1950s, had an affair with an older woman, Hanna, who then disappeared only to resurface years later as one of the defendants in a war crimes trial stemming from her actions as a concentration camp guard late in the war. He alone realizes that Hanna is illiterate and may be concealing that fact at the expense of her freedom.", "crew": [...], "cast": [ ... { "character": "Hanna Schmitz", "name": "Kate Winslet", "profile_path": "/e3tdop3WhseRnn8KwMVLAV25Ybv.jpg" }, ... ] } ], // other search results fields: processingTimeMs, limit, ... }, { "indexUid": "actors", "hits": [ { "name": "Kate Winslet", "known_for": [ "Titanic", "Eternal Sunshine of the Spotless Mind", "The Reader" ], "birthday": "1975-10-05", "deathday": null, "biography": "Kate Elizabeth Winslet (born 5 October 1975) is an English actress. Known for her work in independent films..." } ], // other search results fields: processingTimeMs, limit, ... } ] }
如您所见,在结果数组中,索引的排序顺序与查询中的顺序相同。响应包含常规搜索返回的常用字段以及索引 UID。请注意,在本例中,我们使用 limit
参数将返回的文档数量限制为一个。
多索引搜索演示
亲自试用!
此演示使用两个数据集:电影和演员。每个数据集都存储在自己的索引中,具有自己的设置,并且如您在上面的示例中看到的,具有自己的架构。
由于两个索引具有不同的架构,因此它们具有不同的可搜索属性。在电影索引中,您可以按电影标题、角色、演员、制片人、导演或电影概述搜索电影。
//movies index searchableAttributes: [ 'title', 'crew.name', 'cast.name', 'cast.character', 'overview', ]
演员索引允许您按姓名搜索演员,以及他们最出名的电影或节目,以及他们在传记中找到的关键词。
//actors index searchableAttributes: ['name', 'known_for', 'biography']
设置、数据集和代码的完整列表都可以在GitHub 上找到,因此您可以随时自行探索它们。请随时尝试更改设置,以根据您的需要自定义行为。如果您有改进演示的想法,例如添加 facets,请随时提交拉取请求。欢迎所有贡献!
结论
我们很高兴能够交付此联合搜索的第一个版本,我们将努力推进聚合搜索结果。如果没有我们开发者社区提供的宝贵反馈和见解,我们不可能实现这一目标。您的反馈对于帮助我们确定优先级并塑造该功能以满足您的需求至关重要。
如果您有兴趣了解我们的进展情况,我们建议您查看我们的产品路线图,加入我们在 GitHub 上的讨论,或在 Discord 上与我们联系。
与以往一样,我们致力于为用户提供最佳的搜索体验,并感谢您在实现此目标方面的帮助。