0

我们公司提供基于位置的服务。内容可以通过手机精确搜索用户的位置。该搜索由使用以下公式的距离搜索组成

((ACOS(SIN($lat * PI() / 180) * SIN(lat * PI() / 180) + COS($lat * PI() / 180) * COS(lat * PI() / 180) * COS(($lon – lon) * PI() / 180)) * 180 / PI()) * 60 * 1.1515)

还有一些关于标题、类别、描述的文本搜索。

由于我们的数据库中有数百万条记录,我们无法将其优化为我们想要的那样快。然后我们决定试一试 Zend Lucene 搜索。在像这样索引 lat 和 lang 之后,

$doc->addField(Zend_Search_Lucene_Field::UnIndexed('lat', '-0.502123');
$doc->addField(Zend_Search_Lucene_Field::UnIndexed('lng', '1.502123');
$doc->addField(Zend_Search_Lucene_Field::Text('title', 'This is a title');
$doc->addField(Zend_Search_Lucene_Field::Text('desc', 'this is a description');

如何查询 lat 和 lng 的 UnIndexed Lucene_Field 上的距离公式?是否可以?或者有什么解决方法吗?

谢谢你,卡提克

4

2 回答 2

1

无法查询未索引的数据。仅存储未索引的数据。

如果要搜索(查询)经纬度,则应将其设置为索引数据。

查看Zend_Search_Lucene_Field 类型列表

同样在这个链接你有Zend_Search_Lucene的简单教程

于 2011-11-16T20:57:11.183 回答
0

我遇到了同样的问题,但其他答案对我没有帮助。所以我找到了这个很棒的教程。我希望它可以帮助像我这样的其他人。http://develop.nydi.ch/2010/10/lucene-spatial-example/

于 2013-03-18T22:53:09.943 回答