我们公司提供基于位置的服务。内容可以通过手机精确搜索用户的位置。该搜索由使用以下公式的距离搜索组成
((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 上的距离公式?是否可以?或者有什么解决方法吗?
谢谢你,卡提克