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">...
인덱싱 및 그 특성을 조회하는 것은 작동하고 올바른을 반환 결과.
후속 질문이있는 경우 별도의 SO 질문으로 게시하십시오. 이 질문이 관련된 경우 새로운 질문에 연결할 수 있습니다. – wst