2012-05-07 2 views
3

나는 내가 cts:field-word-query을 사용할 수 있도록 patent-assignor & patent-assignee 에 대한 Marklogic 서버에서 데이터베이스 필드를 만들려면 다음과 같은 XML 구조를Marklogic Server에서 데이터베이스 필드를 만드는 방법은 무엇입니까?

<patent-assignors> 
     <patent-assignor> 
      <name>VOLPENHEIN, ROBERT A.</name> 
      <execution-date> 
     <date>19841204</date> 
      </execution-date> 
     </patent-assignor> 
</patent-assignors> 


    <patent-assignees> 
     <patent-assignee> 
      <name>PROCTER &amp; GAMBLE COMPANY, THE</name> 
      <address-2>A CORP. OF OHIO</address-2> 
      <city>CINCINNATI</city> 
      <state>OHIO</state> 
     </patent-assignee> 
    </patent-assignees> 

있습니다. 그러나 저는 특허 할당 자와 특허 출원 자의 이름을 검색하고 싶습니다 (둘 다 같은 요소 "name"포함). 누구는 내가 특허 양도인과 특허 양수인의 이름에 cts:field-word-query을 사용할 수 있도록 특허 양도인의 필드를 특허 양도인 이름과 특허 양도인에게 특허 출원인 이름에 어떻게 매핑 할 수 있는지 말해 줄 수 있습니까? 정확한 일치를 원해.

답변

2

사실 Field 인덱스의 유스 케이스처럼 들리지는 않습니다. 요소 'name'에 색인을 추가하면 두 경우 모두 동일한 색인에 색인이 생성됩니다. 구별을하려면 word-query 또는 value-query을 적절한 부모 요소에 대해 element-query으로 두십시오.

+0

여기 색인에 대해서는 언급하지 않습니다. 색인이 아닌 필드를 만들고 싶습니다! –

+0

@ puneet-pant 필드는 또 다른 유형의 인덱스입니다. – grtjn

+0

@ puneet-pant MarkLogic Admin Guide의 다음 섹션에 관심이있을 수 있습니다. 필드 작동 방식 및 보유하고있는 옵션에 대해 설명합니다. http : // docs.marklogic.com/5.0doc/docapp.xqy#display.xqy?fname=http://pubs/5.0doc/xml/admin/fields.xml&query=Fields – grtjn

1

위의 사용자가 사용 가능한 옵션을 이해하는지 확인하는 것이 중요하다고 생각합니다. 귀하의 질문을 정확하게 이해할 수 있다면 MarkLogic은 "범용 색인"만을 사용하여 검색에 응답 할 수 있습니다.

양도인 모두가 모두라는 요소를 사용하여 항목을 할당하기 때문에 "name는"정확히 일치하는 두 쿼리하는 acutally 매우 간단하지만 경우

cts:element-value-query(xs:QName("name"), "VOLPENHEIN, ROBERT A.") 

(정확한 일반적으로 일치는 value-query 아닌 word-query 의미)가 양수인과 양수인 이외의 데이터에 "name"요소가 더 많으며 검색 범위를 좁히려면 element-queries을 사용할 수있는 다른 "name"필드가 아닌 조회수 범위를 좁혀 야합니다. element-word-positionselement-value-positions 설정을 확인하십시오. true로 설정하여 데이터베이스)

cts:or-query((

    cts:element-query(xs:QName("patent-assignor"), 
         cts:element-value-query(
          xs:QName("name"), 
          "VOLPENHEIN, ROBERT A.")), 

    cts:element-query(xs:QName("patent-assignee"), 
         cts:element-value-query(
          xs:QName("name"), 
          "VOLPENHEIN, ROBERT A.")) 
)) 

필드 "포함"과 "제외"따르지 논리 복잡한있다, 특히 특정 요소를 분리 관련하여 매우 강력한 될 수 있습니다. 쿼리 시간에 필터링을 수행하기 위해 "유니버설 인덱스"만 사용하면 작업을보다 유연하게 유지할 수있을 가능성이 높습니다.

+0

하나의 요소 쿼리에 여러 QName을 전달하면 위 쿼리가 단축 될 수 있습니다. 이 함수는 첫 번째 인수로 시퀀스를받습니다. 수시로 매우 유용 할 수 있습니다 .. – grtjn

+0

감사합니다 @derickson –

+0

@derickson 자세한 설명을 주셔서 감사합니다. 특허 출원인과 특허 출원인의 이름을 비교하고 특허 출원자와 특허 출원인의 이름이 같지 않은 결과 만 반환하려는 경우 질문이 하나 더 있습니다. 그런 다음 어떻게 쿼리를 작성해야합니까? –

관련 문제