Conditions in Zend Lucene



我们公司有一个基于位置的服务。这些内容可以通过手机精确地搜索到用户的位置。此搜索包含使用以下公式的距离搜索

((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');

如何查询未索引Lucene_Field的lat和lng上的距离公式?这可能吗?还是有其他解决办法?

谢谢你,恋人

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

如果你想搜索(查询)lat和long,你应该将其设置为索引数据。

查看Zend_Search_Lucene_Field类型列表

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

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

最新更新