2012-08-30 4 views
1

나는 하나의 핵심 solr 인스턴스를 실행하고 있습니다. 두 가지 유형의 문서를 저장하고 싶습니다.solr 문서에 uniquie 필드가 있어야합니까? 내 solr 디자인을 수정 도와주세요

  1. 사용자에 대한 기본 프로필. (필드 : uid : "1", docType = "profile"..)
  2. 각 사용자가 소유 한 차량. (필드 uid : "1", docType = "cars"...)

1 사용자 당 단일 문서가 있습니다. 2는 각 사용자에 대해 여러 개의 문서 (각 별도의 자동차)를 갖습니다.

몇 가지 디자인상의 이유로 인해 자동차에 대한 다중 값 필드가 필요하지 않습니다. 사용자 당 1 대의 자동차에 여러 문서가 필요합니다.

uid를 스키마에서 고유 한 필드로 선언하면 나중에 추가 된 내 자동차 문서가 해당 사용자의 내 프로필 문서 또는 이전에 추가 된 동일한 사용자의 다른 자동차 문서를 덮어 쓰게됩니다. 내가 시도하고있는 것을 어떻게 달성 할 수 있습니까? (즉, 사용자 당 프로필 문서 1 개와 사용자 당 여러 개의 자동차 문서)

저는 솔직히 일하기 시작 했으니까요. 아주 근사합니다. 그래서 저를 용서해주십시오.

시간 내 Thnx.

+0

http://wiki.apache.org/solr/UniqueKey 예를 들어,

<field name="user" type="string" indexed="true" stored="true"/> <field name="cars" type="string" indexed="true" stored="true" multiValued="true"/> 

그리고이 같은 문서를 가질 수 있습니다 –

답변

2

schema.xml에 Universal Unique Identifier를 추가하여이를 해결할 수 있습니다.

schema.xml 파일에 다음 fieldType을 추가하십시오.

<fieldType name="uuid" class="solr.UUIDField" indexed="true" /> 

그런 다음이 유형의 새 필드를 추가하십시오.

<field name="id" type="uuid" indexed="true" stored="true" default="NEW" /> 

마지막으로이 필드에 고유 ID 키를 정의하십시오.

<uniqueKey>id</uniqueKey> 

자세한 내용은 UniqueKey page in Solr wiki을 참조하십시오.

0

문서를 색인에 넣는 방식에 따라 조합이 고유 한 경우 uid와 docType을 연결 한 인공 키를 만들 수 있습니다. 물론 UUIDField를 사용하는 것은 유효한 옵션이지만 무의미한 키를 얻습니다.

2

더 나은 문서 유지 관리를 위해 고유 한 필드가있는 것이 좋습니다.

Solr은 고유 ID를 기반으로 문서를 유지 관리합니다. 기존 ID가 같은 문서를 삽입하면 Solr은 이전 ID를 덮어 씁니다.

예를 들어 프로필과 자동차에 대해 동일한 uid를 사용하는 것은 좋은 해결책이 아닙니다. 그들 중 하나만 그 uid를 사용하도록하십시오. 예를 들어 사용자에게만 uid를 할당하고 고유하게 만듭니다.

<uniqueKey>uid</uniqueKey> 

이제 자동차에 다른 이드를 제공하십시오.

다중 값 필드를 사용할 수도 있습니다.

<doc> 
    <field name="uid">UserID</field> 
    <field name="name">User Name</field> 
    <field name="cars">Car 1</field> 
    <field name="cars">Car 2</field> 
    <field name="cars">Car 3</field> 
</doc>