2017-11-08 11 views
2

나는 다음과 같은 MarkLogic에 저장된 문서가 있습니다의 요청에 의한 예제를 사용하는 MarkLogic에서 더 이상 사용되지 KeyValueQueryDefinition를 교체

// create a manager for searching 
    QueryManager queryMgr = client.newQueryManager(); 

    KeyValueQueryDefinition query = queryMgr.newKeyValueDefinition(); 
    query.put(queryMgr.newElementLocator(new QName("emailAddress")),"[email protected]"); 

    // create a handle for the search results 
    SearchHandle resultsHandle = new SearchHandle(); 

    // run the search 
    queryMgr.search(query, resultsHandle);   

    // Get the list of matching documents in this page of results 
    MatchDocumentSummary[] results = resultsHandle.getMatchResults(); 

    // Iterate over the results 
    for (MatchDocumentSummary result: results) { 

     // get the list of match locations for this result 
     MatchLocation[] locations = result.getMatchLocations(); 
     System.out.println("Matched "+locations.length+" locations in "+result.getUri()+":"); 

     // iterate over the match locations 
     for (MatchLocation location: locations) { 

      // iterate over the snippets at a match location 
      for (MatchSnippet snippet : location.getSnippets()) { 
       boolean isHighlighted = snippet.isHighlighted(); 

       if (isHighlighted) 
        System.out.print("["); 
       System.out.print(snippet.getText()); 
       if (isHighlighted) 
        System.out.print("]"); 
      } 
      System.out.println(); 
     } 
     System.out.println(); 
    } 
} 

:

<?xml version="1.0" encoding="UTF-8"?> 
<user> 
    <userName>Vikram</userName> 
    <password>password</password> 
    <firstName>Vikram</firstName> 
    <lastName>Swaminathan</lastName> 
    <emailAddress>[email protected]</emailAddress> 
</user> 

되지 않는 (KeyValueQueryDefinition)와 함께 작동 코드는 다음과 같다을 출력은 다음과 같습니다.

Matched 1 locations in user/vikram: 
[[email protected]] 

아래 링크에서 도움을 받았습니다. KeyValueQueryDefinition이 최신 버전에서는 더 이상 사용되지 않으므로 새로운 Marklogic 9 버전에서 작동하게 만들 수 있습니다.

: https://docs.marklogic.com/guide/relnotes/chap4#id_22988

는 변형은 아래 링크에서 여기에 언급 된 문서를 검색 할 QBE를 사용하려면 여기를 KeyValueQueryDefinition 코드

KeyValueQueryDefinition query = queryMgr.newKeyValueDefinition(); 
     query.put(queryMgr.newElementLocator(new QName("emailAddress")),"[email protected]"); 

가 변경인가

https://docs.marklogic.com/guide/java/searches#id_69351

어떤 방법이 접근하는 방법 ??

답변

1

질문을 이해하지 못할 수도 있습니다. link you provided의 안내를 따르지 않습니까?

String rawXMLQuery = 
    "<q:qbe xmlns:q='http://marklogic.com/appservices/querybyexample'>"+ 
    "<q:query>" + 
     "<emailAddress>[email protected]</emailAddress>" + 
    "</q:query>" + 
    "</q:qbe>"; 
StringHandle rawHandle = 
    new StringHandle(rawXMLQuery).withFormat(Format.XML); 
RawQueryByExampleDefinition query = 
    queryMgr.newRawQueryByExampleDefinition(rawHandle);