本月的发布为您带来了地理搜索以及对 CSV 和 NDJSON 有效负载的支持!您可以阅读完整的 变更日志,但让我们看一下一些主要的和重大的更改。

新功能:地理搜索

Meilisearch v0.23 支持地理搜索。这允许您根据位置过滤和排序结果。

要开始使用此功能,_geo 字段必须存在于您已索引的文档中,并添加到 filterableAttributessortableAttributes 列表中,具体取决于您要执行的操作类型。

要过滤您的结果,使其位于特定区域内,可以使用内置的 _geoRadius 过滤规则。假设我们在马斯喀特的中心,并且想要查看距离在两公里内的餐厅

curl  
    -X POST 'http://localhost:7700/indexes/restaurants/search' \
    --data-binary '{ 
		"filter": "_geoRadius(23.5880, 58.3829, 2000)" 
	}'

_geoRadius 根据中心点和半径建立一个圆形区域。它需要三个参数:latlngdistance_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 用于 JSON
  • Content-Type: application/x-ndjson 用于 NDJSON
  • Content-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


这就是全部内容了!请记住查看 变更日志,了解完整的发布说明,我们下个月再见!