2011-12-12 2 views
0

내 색인에 "연령대"라는 필드가있는 문서가 포함되어 있다고 가정 해보십시오. "연령"필드의 예 항목 : 나는 누구의 필드 사이의 연령대를 포함하는 모든 문서를 얻을 수 있도록Zend 여러 값을 가진 필드에서 Lucene 및 범위 검색

  • 25
  • 24, 28
  • (25),

(31)가 어떻게이를 조회 할 20, 30? Zend Lucene을 사용하고 있습니다.

+0

결과와 같다 : [20 ~ 30]'가지고있는 "나이에도 불구하고 젠드 - 루씬이 작동 – ajreal

답변

1

lmgtfy : -

$from = new Zend_Search_Lucene_Index_Term(20, 'ages'); 
$to = new Zend_Search_Lucene_Index_Term(30, 'ages'); 
$query = new Zend_Search_Lucene_Search_Query_Range(
      $from, $to, true // inclusive 
     ); 
$hits = $index->find($query); 

문서 도구 : - http://framework.zend.com/manual/en/zend.search.lucene.query-api.html#zend.search.lucene.queries.range

모두 루씬과 SOLR 지원은 다중 값.
귀하의 경우 데이터를 잘 정규화하지 않았습니다.
연령 필드를 다중 값으로 재 할당하려면
범위 쿼리는 다중 값의 값 중 하나와 일치해야합니다. 당신이 30-20 사이의 모든 값과 일치해야하는 경우

20,29 <-- matched 
20,31 <-- matched 
30,31 <-- does not matched 

평균의
,

20,21,30 <-- matched 
19,21,30 <-- not matched 
당신은 다른 필드 (들)를 사용할 수 있습니다

,
같은 : -

age_20_30 : store 1 (when all ages are between 20 to 30), else 0 
age_30_40 : store 1 (when all ages are between 30 to 40), else 0 
... etc 

그 후 age_20_30:1에서 검색하도록 변경할 수 있습니다.
이 순수한 루씬 쿼리를 사용하는 경우 요약에서 작동하도록 루씬을 말하는 것은 '시대로, 간단

+0

재미 "하나 이상의 값을 포함하는 필드? – StackOverflowNewbie

+0

는 여러 연령대입니까? – ajreal

+0

여전히 작동해야합니다 (적어도 제 인스턴스는 잘 작동합니다) – ajreal