本月的发布为您带来了地理搜索以及对 CSV 和 NDJSON 有效负载的支持!您可以阅读完整的 变更日志,但让我们看一下一些主要的和重大的更改。
新功能:地理搜索
Meilisearch v0.23 支持地理搜索。这允许您根据位置过滤和排序结果。
要开始使用此功能,_geo
字段必须存在于您已索引的文档中,并添加到 filterableAttributes
或 sortableAttributes
列表中,具体取决于您要执行的操作类型。
要过滤您的结果,使其位于特定区域内,可以使用内置的 _geoRadius
过滤规则。假设我们在马斯喀特的中心,并且想要查看距离在两公里内的餐厅
curl
-X POST 'http://localhost:7700/indexes/restaurants/search' \
--data-binary '{
"filter": "_geoRadius(23.5880, 58.3829, 2000)"
}'
_geoRadius
根据中心点和半径建立一个圆形区域。它需要三个参数:lat
、lng
和 distance_in_meters
,分别代表纬度、经度和以米为单位的距离。
您还可以使用 _geoPoint
将搜索结果根据它们与地理位置的距离升序或降序排序。假设您想根据文档与埃菲尔铁塔的距离对文档进行排序
curl \
-X POST 'http://localhost:7700/indexes/restaurants/search' \
-H 'Content-type:application/json'
--data-binary '{
"sort": "_geoPoint(48.8583701,2.2922926):asc"
}`
搜索响应将返回一个名为 _geoDistance
的额外字段。这是根据 _geoPoint
和搜索结果的 _geo
坐标计算出的以米为单位的距离。
新功能:支持 NDJSON 和 CSV 有效负载
Meilisearch 现在除了 JSON 之外还接受 CSV 和 NDJSON 作为数据源。现在您需要为通过 curl
等工具进行的 HTTP 请求指定一个 Content-Type 标头。
CSV 和 NDJSON 都提供了更好的索引性能,消耗更少的 RAM,并且不像 JSON 那样 CPU 密集。NDJSON 更易于验证,并且与 CSV 不同,它可以处理嵌套结构。
重大更改:Content-Type 标头现在是强制性的
由于 Meilisearch 现在支持 JSON、NDJSON 和 CSV,因此您需要为通过 curl
等工具进行的 HTTP 请求指定内容标头。
Content-Type: application/json
用于 JSONContent-Type: application/x-ndjson
用于 NDJSONContent-Type: text/csv
用于 CSV
创建索引时 JSON 标头的示例
curl \
-X POST 'http://localhost:7700/indexes' \
-H 'Content-Type: application/json' \
--data-binary '{
"uid": "movies",
"primaryKey": "movie_id"
}'
贡献者
非常感谢我们所有的贡献者!没有您的支持,我们不可能走到今天。这个月,我们要特别感谢 @anirudhRowjee、@felixonmars、@happysalada、@kappa-wingman、@k-nasa 和 @shekhirin。
这就是全部内容了!请记住查看 变更日志,了解完整的发布说明,我们下个月再见!