development

Solr에서 "multiValued"필드 유형의 사용은 무엇입니까?

big-blog 2020. 10. 27. 22:46
반응형

Solr에서 "multiValued"필드 유형의 사용은 무엇입니까?


저는 Apache Solr를 처음 사용합니다. 설명서 부분 을 읽은 후에도 multiValued필드 유형 속성 의 기능과 사용을 명확하게 이해하기가 어렵습니다 .

내부적으로 Solr이 multiValued 로 표시된 필드를 수행 / 처리 / 처리하는 것은 무엇입니까 ?

다중 값을 갖는 필드 와 그렇지 않은 필드 간의 Solr 인덱싱의 차이점은 무엇입니까 ?

누군가 좋은 예를 들어 설명 할 수 있습니까?

Doc 말한다 :

multiValued = true | false

이 필드가 문서 당 여러 값을 포함 할 수있는 경우 (예 : 문서에 여러 번 나타날 수있는 경우) 참


다중 값 필드는 필드에 둘 이상의 값이있는 경우 유용합니다. 쉬운 예는 태그입니다. 색인화해야하는 여러 태그가있을 수 있습니다. 따라서 태그 필드가 다중 값 인 경우 solr 응답은 문자열 값 대신 목록을 반환합니다. 한 가지 주목할 점은 다음과 같이 태그의 각 값에 대해 여러 줄을 제출해야한다는 것입니다.

<field name = "tags"> 태그 1 </ tags>
<field name = "tags"> 태그 2 </ tags>
...
<field name = "tags"> 태그 </ tags>

모든 값 인덱스가 있으면 값을 기준으로 검색하거나 결과를 필터링 할 수 있습니다. 다음과 같은 쿼리를 사용하여 tag1이있는 모든 문서를 찾을 수 있습니다

q=tags:tag1

또는 태그를 사용하여 다음과 같은 결과를 필터링합니다.

q=query&fq=tags:tag1

필드가 둘 이상의 값을 가질 수 있는지 여부를 스키마에 정의 된 multiValued.

예를 들어 다음
과 같은 문서를 색인하는 multiValued = false 인 fieldType이라는 ID가있는 경우 :

doc {
  id : [ 1, 2]
  ...
}

인덱싱 스레드에서 예외가 발생하고 문서가 인덱싱되지 않습니다 (스키마 유효성 검사가 실패 함).

반면에 필드에 여러 값이있는 경우 인덱싱이 올바르게 수행되도록 보장하기 위해 multiValued = true를 설정하고 싶습니다. 예를 들면 다음과 같습니다.

doc {
  id : 1
  keywords: [ hello, world ]
  ...
}

이 경우 "키워드"를 다중 값 필드로 정의합니다.


복사 필드에만 여러 값 필드를 사용하므로 복사 필드가 아닌 경우 모든 필드가 단일 값이라고 가정합니다. 예를 들어 다음 필드가 있습니다.

<field name="id" type="string" indexed="true" stored="true"/>
<field name="name" type="string" indexed="true" stored="true"/>
<field name="subject" type="string" indexed="true" stored="true"/>
<field name="location" type="string" indexed="true" stored="true"/>

한 필드 만 쿼리하고 위의 4 개 필드를 모두 검색하려면 copyfield를 사용해야합니다. 먼저 'all'이라는 새 필드를 만든 다음 모든 것을 'all'에 복사합니다.

<field name="all" type="text" indexed="true" stored="true" multiValued="true"/>
<copyField source="*" dest="all"/>

이제 'all'필드는 다중 값이어야합니다.

참고 URL : https://stackoverflow.com/questions/5800762/what-is-the-use-of-multivalued-field-type-in-solr

반응형