0

当社では位置情報サービスを行っております。コンテンツは、ユーザーの位置を正確にモバイルで検索できます。この検索は、次の式を使用した距離検索で構成されます

((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 で距離式をクエリするにはどうすればよいですか? 出来ますか?または回避策はありますか?

ありがとう、カーシック

4

2 に答える 2

1

インデックス付けされていないデータをクエリすることはできません。インデックス付けされていないデータのみが保存されます。

latとlongを検索(クエリ)する場合は、インデックス付きデータとして設定する必要があります。

Zend_Search_Lucene_Fieldタイプのリストを参照してください

また、このリンクには、Zend_Search_Luceneの簡単なチュートリアルがあります

于 2011-11-16T20:57:11.183 に答える
0

私はこれと同じ問題を抱えていましたが、他の答えは役に立ちませんでした。だから私はこの素晴らしいチュートリアルを見つけました。私のような他の人に役立つことを願っています。http://develop.nydi.ch/2010/10/lucene-spatial-example/

于 2013-03-18T22:53:09.943 に答える