`@geodist` 如何在 Sphinx 中实现排序/搜索?

Posted

技术标签:

【中文标题】`@geodist` 如何在 Sphinx 中实现排序/搜索?【英文标题】:How is `@geodist` sorting/search implemneted in Sphinx? 【发布时间】:2011-06-16 17:11:47 【问题描述】:

@geodist 搜索是否使用任何类型的地理空间索引(如 R 树)来提高性能?

我对锚点不变并且每个文档都有自己的以弧度存储的纬度/经度对的情况感兴趣。

我试图从 Sphinx 源代码中找出它,但未能找到任何空间索引的提及。如果地理空间搜索不使用索引,那么如何保证性能?

如果没有提供关键字,Sphinx 会进行全盘扫描吗?

背景:我们有一个包含 100 多个短条目的数据集。一些新添加的项目将存储纬度/经度。每天添加数百万个条目。我预测大约 5-10% 的新添加条目会有位置信息。

我们的目标是对启用了位置的条目进行空间搜索,例如“获取锚点周围 100 米半径内的所有条目”、“获取锚点周围 100 个最近的条目”,无论是否使用关键字搜索。

一些谷歌搜索返回了this forum thread,这表明使用基于网格的人工索引来确保性能。还是这样吗?

【问题讨论】:

好问题。一直在问这个自己!我将在接下来的几天里让#sphinxsearch 中的家伙们发出错误的消息,希望有人能够提供一个有根据的答案。 【参考方案1】:

不,狮身人面像没有任何内置的地理空间索引 - 因此瓷砖的原因(制作一个基本的地理空间索引:)

它确实只是对每一行进行球面距离计算——全表扫描。它相当快,因为​​属性都保存在内存中。

检查来源: http://codesearch.google.com/#vqMBzkK4ih0/src/sphinxexpr.cpp&exact_package=git://github.com/squadette/sphinxsearch.git&q=cos%20sphinxsearch&type=cs&l=1186

最近在 sphinx 论坛上讨论这个问题的帖子 http://sphinxsearch.com/forum/view.html?id=8644

【讨论】:

以上是关于`@geodist` 如何在 Sphinx 中实现排序/搜索?的主要内容,如果未能解决你的问题,请参考以下文章

使用带有 ORM 的 Sphinx 搜索

如何在Castle.Core中实现IProxyGenerationHook的类中实现Equals和GetHashCode的覆盖方法?

如何在android中实现svm模型?

如何在 laravel 中实现 vuetify?

SolrNet 空间搜索 - 在 geodist() 上排序

如何在android中实现BottomAppBar?