Ah well, my last reply was redundant as you seem to have found the answer 
yourself.  Good on you!

Here's an update with a working sample.  Notice I changed search:constraint to 
search:values.  And notice I pass the options name to the newValuesDefintion 
method.


import com.marklogic.client.DatabaseClientFactory;
import static com.marklogic.client.DatabaseClientFactory.Authentication.DIGEST;
import com.marklogic.client.DatabaseClient;
import com.marklogic.client.admin.QueryOptionsManager;
import com.marklogic.client.query.CountedDistinctValue;
import com.marklogic.client.query.QueryManager;
import com.marklogic.client.query.ValuesDefinition;
import com.marklogic.client.io.StringHandle;
import com.marklogic.client.io.ValuesHandle;

public class Test {
    public static void main(String[] args) {
        DatabaseClient client = DatabaseClientFactory.newClient("localhost", 
8000, "admin", "admin", DIGEST);

        QueryOptionsManager optionsMgr = 
client.newServerConfigManager().newQueryOptionsManager();

        // construct the query options
        String optionXml =
                "<search:options "+
                        
"xmlns:search='http://marklogic.com/appservices/search'>"+
                    "<search:values 
name='country'><search:valuesname='country'>"+
                        "<search:range 
collation='http://marklogic.com/collation/' type='xs:string' 
facet='true'><search:rangecollation='http://marklogic.com/collation/'type='xs:string'facet='true'>"+
                        
"<search:facet-option><search:facet-option>frequency-order</search:facet-option>"+
                        
"<search:facet-option><search:facet-option>descending</search:facet-option>"+
                        
"<search:facet-option><search:facet-option>limit=10</search:facet-option>"+
                            "<search:element ns='' 
name='country'/><search:elementns=''name='country'/>"+
                        "</search:range>"+
                    " </search:values>"+
                "</search:options>";

        // create a handle to send the query options
        StringHandle writeHandle = new StringHandle(optionXml);

        // write the query options to the database
        optionsMgr.writeOptions("myOptions", writeHandle);
        QueryManager queryMgr = client.newQueryManager();
        ValuesDefinition query = queryMgr.newValuesDefinition("country", 
"myOptions");
        ValuesHandle values = queryMgr.values(query, new ValuesHandle());
        for (CountedDistinctValue value : values.getValues() ) {
            String textValue = value.get("xs:string", String.class);
            System.out.println(textValue + " " + value.getCount());
        }
    }
}



Sam Mefford
Senior Engineer
MarkLogic Corporation
[email protected]<mailto:[email protected]>
Cell: +1 801 706 9731
www.marklogic.com<http://www.marklogic.com>

This e-mail and any accompanying attachments are confidential. The information 
is intended
solely for the use of the individual to whom it is addressed. Any review, 
disclosure, copying,
distribution, or use of this e-mail communication by others is strictly 
prohibited. If you
are not the intended recipient, please notify us immediately by returning this 
message to
the sender and delete all copies. Thank you for your cooperation.


On 2/22/2015 10:58 PM, Maisnam Ns wrote:
Hi,

Can someone help me on creating the query options , the first one using

1. QueryOptionsBuilder in Java API works but with xml it is not working, the 
result I am getting is

1. US 100
2. JP   49
3. ES   23

Basically , I am getting the country and the counts .

QueryOptionsBuilder qob = new QueryOptionsBuilder();

        // expose the "SPEAKER" element range index as "speaker" values
        QueryOptionsHandle options = new QueryOptionsHandle().withValues(
            qob.values("country",
                    qob.range(
                        qob.elementRangeIndex(new QName("country"),
                            
qob.stringRangeType(QueryOptions.DEFAULT_COLLATION))),
                    "frequency-order"));


2. QueryOptionsManager optionsMgr = 
client.newServerConfigManager().newQueryOptionsManager();

        // construct the query options
        String optionXml =
                "<search:options "+
                        
"xmlns:search='http://marklogic.com/appservices/search'>"+
                    "<search:constraint 
name='country'><search:constraintname='country'>"+
                        "<search:range 
collation='http://marklogic.com/collation/' type='xs:string' facet='true'>"+
                        
"<search:facet-option><search:facet-option>frequency-order</search:facet-option>"+
                        
"<search:facet-option><search:facet-option>descending</search:facet-option>"+
                        
"<search:facet-option><search:facet-option>limit=10</search:facet-option>"+
                            "<search:element ns='' 
name='country'/><search:elementns=''name='country'/>"+
                        "</search:range>"+
                    " </search:constraint>"+
                "</search:options>";

        // create a handle to send the query options
        StringHandle writeHandle = new StringHandle(optionXml);

        // write the query options to the database
        optionsMgr.writeOptions(OPTIONS_NAME, writeHandle);
        QueryManager queryMgr = client.newQueryManager();



_______________________________________________
General mailing list
[email protected]<mailto:[email protected]>
http://developer.marklogic.com/mailman/listinfo/general


_______________________________________________
General mailing list
[email protected]
http://developer.marklogic.com/mailman/listinfo/general

Reply via email to