2014-03-28 1 views
0

많은 응용 프로그램에서 cts : contains()를 사용하고 있습니다. ML-7로 마이그레이션했을 때 대부분의 장소에서 cts : contains()가 예상대로 작동하지 않았습니다. 대부분의 경우 xdmp : quote() 첫 번째 매개 변수를 사용하여 필요한 결과를 얻지 만 유효 픽스가 아닌 것 같습니다. 또한 내가 cts : reverse-query in cts : contains를 사용하는 다른 경우에도 이것은 불가능합니다. 이 문제를 해결하기위한 해결 방법이 있습니까? 아니면 모든 CTS에서 재 작업해야합니까? 또한 Marklogic 7의 API 변경 사항에 대한 설명서가 있습니까? 이전 릴리스에서cts : contains() marklogic 7에서 예상대로 작동하지 않습니다.

+0

테스트 케이스가 있습니까? 실행 한 문제를 보여주는 게시 코드입니다. – mblakele

답변

0

마이크. 귀하의 의견을 보내 주셔서 감사합니다. 이 문제는 Marklogic 7.0.2.2 버전의 일부로 해결되었습니다. 이전 7.0.2.1 버전에는이 문제가있었습니다.

1

변경 사항은 설치 가이드에 있습니다 "원자 값이 일치를 확인하기 전에 텍스트 노드로 변환된다"고 cts:contains 참고 http://docs.marklogic.com/guide/relnotes

워드 프로세서. 따라서 xdmp:unquote의 결과는 사용자가 원하는 것을 수행하지 않습니다. 원래 XML 노드를 테스트하는 대신 직렬화 된 XML이 포함 된 텍스트 노드를 테스트합니다.

다음은 docscts:containscts:reverse-query의 예입니다. 이것은 나를 위해 잘 작동 7.0-2.2 및 반환 true 예상대로.

let $query := <query>{cts:word-query("hello")}</query> 
let $x := <bar>hello</bar> 
return cts:contains($query, cts:reverse-query($x)) 

일반적으로 cts:contains는 메모리 평가를 수행 말하기, 잘 확장되지 않습니다. 데이터베이스에없는 개별 메모리 내 문서 작업에 편리합니다. 그러나 대부분의 경우 cts:search 또는 search:search을 사용하는 것이 더 좋습니다.

관련 문제