2011-11-16 6 views
0

당사는 위치 기반 서비스를 제공하고 있습니다. 사용자의 위치에 따라 모바일을 통해 콘텐츠를 정확하게 검색 할 수 있습니다. 이 검색은 다음 식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) 검색을 한 번 해보겠다고 결심했습니다. 이 같은 위도와 랭 색인 후

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

는 어떻게 위도와 LNG의 색인화되지 않은 Lucene_Field에 거리 공식을 조회 할 수 있습니다? 가능한가? 또는 주변에 어떤 문제가 있습니까?

색인화되지 않은 데이터를 쿼리 할 수 ​​없습니다, KARTHIK

+0

"다음과 같이 lat와 lang을 인덱싱 한 후"색인이 제거되지 않은 값을 설정합니다. 잘 모르겠습니다. 하지만 내 경험으로는 데이터를 검색하려면 색인을 생성해야합니다. – tasmaniski

답변

1

을 주셔서 감사합니다. 인덱싱되지 않은 데이터는 저장됩니다.

위도와 경도를 검색 (쿼리)하려면 인덱싱 된 데이터로 설정해야합니다. Zend_Search_Lucene_Field Types

참조 목록에는이 링크에서 당신은 내가이 같은 문제를했지만, 다른 대답은 나에게 도움이되지 않았다 Zend_Search_Lucene

+0

고마워.하지만 위와 거리를 인덱싱 한 후 위의 거리 공식을 수행 할 수 있습니까? – Karthik

+1

어디에 문제가 있는지 잘 모르겠습니다. 어쨌든 검색 결과에서 (위도와 장도) 결과를 얻으면 거리 계산식을 사용하여 계산할 수 있습니다. 표준 PHP 수학 함수 http://php.net/manual/en/ref.math.php입니다. PHP에 관해서는, 원할 때마다 거리 공식을 사용할 수 있습니다 ... – tasmaniski