我们公司有基于位置的服务。可以通过移动设备精确搜索内容以获取用户的位置。此搜索包括使用以下公式的距离搜索
((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上查询距离公式?可能吗?或者有什么工作吗?
谢谢你, KARTHIK
答案 0 :(得分:1)
无法查询未编制索引的数据。仅存储未编制索引的数据。
如果要搜索(查询)lat和long,则应将其设置为索引数据。
参见Zend_Search_Lucene_Field Types
列表同样在此链接中,您可以获得Zend_Search_Lucene
的简单教程答案 1 :(得分:0)
我有同样的问题,但另一个答案对我没有帮助。所以我发现了这个很棒的教程。我希望它能帮助像我这样的人。 http://develop.nydi.ch/2010/10/lucene-spatial-example/