我們在我們公司有一個基於位置的服務。內容可以通過移動設備精確搜索用戶的位置。此搜索包括使用以下公式進行的距離搜索: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');
如何查詢lat和lng的UnIndexed Lucene_Field上的距離公式?可能嗎?或者有什麼解決辦法嗎?
謝謝 KARTHIK
「將索引lat和lang編碼爲像這樣..」後,您可以設置UnIndexed值。 我不確定。但根據我的經驗,如果你想搜索數據,你應該索引它。 – tasmaniski