2014-10-21 5 views
1

에서 쿼리 CQL3 수집지도 상태 :인덱싱 및 SOLR

DSE Search maps collections as follows: 
    Collection list and set: multi-valued field 
    Collection maps: dynamic field 
The name of the dynamic field minus the wildcard is the map name. For example, a map column name dyna* is mapped to dyna. Inner keys are mapped to the full field name. 

마지막 문은 나에게 매우 명확하지 않다. 필드 정의가 정확히 어떻게 표시되어야합니까? CQL3에서 scores map<int,int>으로 정의 된 콜렉션 맵을 가지고 있다고 가정하면 다음 필드 정의가 정확합니까?

<field name="scores*" type="int" indexed="true" stored="true"/> 

어떻게 쿼리합니까? 지도의 값이 {201409 : 89, 201410 : 67}이고 내가 내부 필드 '201410'에 필터링 할 것을 가정하면, 다음과 같은 올바른?

fq=scores201410:[80 TO *] 

답변

1

동적 필드의 이름을 뺀 와일드 카드는 맵 이름은 동적 다음과 같은 것을 의미입니다 필드 CQL에 다음 맵 이름에 해당

동적 필드 : <dynamicField name="lang_*" . . . > 맵 이름 : CREATE TABLE hits (. . .lang_ map<text, text>, . . .); 당신의 예에서

, 동적 필드 이름 = scores_ *.

쿼리는 필드에 삽입 한 값에 따라 달라집니다. 당신이 CQL scores_ 컬럼에이 값을 삽입하는 경우 :

{ 'scores_100' : '5000'} 
{ 'scores_200' : '10000'} 
{ 'scores_100' : '300'} 

을 한 후, 나는 쿼리가 컬렉션의 모든 scores_100이 될 얻을 생각 :

에 http : // : 8983/SOLR/mykeyspace. myscores/select? q = scores_100 % 3A * & wt = xml & 들여 쓰기 = true

+0

감사! 관련 질문 : http://stackoverflow.com/questions/20954157/how-do-i-see-solr-dynamic-fields-in-cql-with-cassandra (하지만 귀하의 답변은 더 구체적입니다) –

+0

아, 네. 관련된 질문에 대한 훌륭한 대답은 제가 말하지 않은 것을 포함합니다. 동적 부분은 컨테이너 이름 (지도)에 의해지도 내부에서 유추되지 않습니다. 따라서 동적 부분을 데이터에 포함시켜야합니다. 이것은 또한 핵심 부분이 텍스트 유형이어야 함을 의미합니다. – catpaws

관련 문제