当社では位置情報サービスを行っております。コンテンツは、ユーザーの位置を正確にモバイルで検索できます。この検索は、次の式を使用した距離検索で構成されます
((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 検索を試してみることにしました。このように緯度と言語を索引付けした後、
$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 で距離式をクエリするにはどうすればよいですか? 出来ますか?または回避策はありますか?
ありがとう、カーシック