2016-09-21 4 views
0

MarkLogic에서 문서를 검색하고 싶습니다.MarkLogic - 최대/최소 필터를 통해 검색

<product xmlns="myns/products"> 
    <id>3114</id> 
    <materialNo xml:lang="en">1.1160</materialNo> 
    <steelName xml:lang="en">SWRCH24K</steelName> 
    <name xml:lang="en">wire, wire rod for cold heading</name> 
    <chemicalProperties> 
    <chemicalProperty> 
     <element>c</element> 
     <min>0.1900</min> 
     <max>0.2500</max> 
    </chemicalProperty> 
    <chemicalProperty> 
     <element>si</element> 
     <min>0.1000</min> 
     <max>0.3500</max> 
    </chemicalProperty> 
    <chemicalProperty> 
     <element>mn</element> 
     <min>1.3500</min> 
     <max>1.6500</max> 
    </chemicalProperty> 
    <chemicalProperty> 
     <element>p</element> 
     <max>0.0300</max> 
    </chemicalProperty> 
    </chemicalProperties> 
</product> 

그래서 내가 화학적 특성의 최대/최소 값을 통해 검색 할 : 같은

내 문서를 찾습니다. 이렇게하려면이 xquery 검색 (간단한 예제)을 사용하십시오.

cts:search(/, cts:and-query(
    (cts:collection-query("test"), 
    cts:element-value-query(
    fn:QName("myns/products", "name"), 
    "wire, wire rod for cold heading"), 
    cts:element-query(
    fn:QName("myns/products", "chemicalProperty"), 
    cts:and-query(
     (cts:element-value-query(
      fn:QName("myns/products", "element"), "c"), 
     cts:or-query(
      (cts:element-range-query(
      fn:QName("myns/products", "max"), "<=", 0.2), 
      cts:and-not-query(
      cts:element-range-query(
       fn:QName("myns/products", "min"), "<=", 0.2), 
      cts:element-value-query(
       fn:QName("myns/products", "max"), "*")))), 
     cts:or-query(
      (cts:element-range-query(
      fn:QName("myns/products", "min"), ">=", 0.1), 
      cts:and-not-query(
      cts:element-range-query(
       fn:QName("myns/products", "max"), ">=", 0.1), 
      cts:element-value-query(
       fn:QName("myns/products", "min"), "*")))))))))) 

위의 쿼리는 예제 문서를 반환합니다. 최대/최소값이 있는지 확인하기 위해 하위 쿼리 (및 아닌 값)가 있습니다. 어떤 경우에는 분 또는 최대 값만있을 수 있습니다.

하지만이 문서는 범위를 벗어났습니다!

데이터베이스의 최소 및 최대 요소 범위 인덱스가 있습니다. 다른 모든 설정은 기본값입니다.

무엇이 문제입니까? 어떤 제안. 제안에 대한

확인

UPDATE, 감사하지만. 가치 위치를 활성화해도 문제가 해결되지 않습니다. 그러나 해결 방법은 "및-하지 쿼리"를 제거하고 "및 쿼리"로 대체하고 문서에 새 속성을 추가하는 것입니다

<chemicalProperty hasMin="0" hasMax="1">... 

인덱싱 및 그 특성을 조회하는 것은 작동하고 올바른을 반환 결과.

+0

후속 질문이있는 경우 별도의 SO 질문으로 게시하십시오. 이 질문이 관련된 경우 새로운 질문에 연결할 수 있습니다. – wst

답변

관련 문제