Search samples

Basics

Most methods use QueryParams. Here are some tips about how to use them.

Variables Type Allow wildcards Restrictions Description

domain

long

No.

Available values:

  • QueryParams.DOCUMENT
  • QueryParams.FOLDER
  • QueryParams.MAIL
  • QueryParams.RECORD

By default the value is set to QueryParams.DOCUMENT.

To search for documents and folders, use the value:

(QueryParams.DOCUMENT | QueryParams.FOLDER) 

Restrict the search to a node type.

author

String

No.

The value must be a valid user ID.

Filter by the creator.

name

String

Yes.

 

Filter by node name.

title

String

Yes.

  Filter by title.

keywords

List<String>

Yes.

 

Filter by keywords.

categories

List<String>

No.

Values should be category UUIDs; do not use path values.

Filter by categories.

content

 

Yes.

 

Filter by binary content.

mimeType

 

No.

The value should be a valid and registered MIME type.

Can only be applied to document nodes.

Filter by document MIME type.

language

 

No.

The value should be a valid language.

Can only be applied to document nodes.

Filter by document language.

folder

 

No.

When empty, the "/okm:root" node is used by default.

The value should be a valid UUID; do not use a path value.

Filter by a folder.

folderRecursive

Boolean

No.

It only makes sense to set this variable to true when the folder variable is not empty.

Enable recursive filtering by a folder.

lastModifiedFrom

Calendar

No.

 

Filter by nodes created after a date.

lastModifiedTo

Calendar

No.

 

Filter by nodes created before a date.

mailSubject

String

Yes.

Only applies to mail nodes.

Filter by the mail subject field.

mailFrom

String

Yes.

Only applies to mail nodes.

Filter by the mail 'from' field.

mailTo

 

Yes.

Only applies to mail nodes.

Filter by the mail 'to' field.

notes

 

Yes.

 

Filter by notes.

properties

Dictionary<String, String>

Yes, in most cases.

Wildcards cannot be applied to metadata field values like "date".

The dictionary of the properties is composed of pairs:

('metadata_field_name','metadata_field_value')

For example:

Dictionary<String, String> properties = new Dictionary<String, String>();
properties.Add("okp:consulting.name", "name value")

 Filtering by a range of dates:

 DateTime date = DateTime.Now;// today
 DateTime to = new DateTime(date.Year, date.Month, date.Day, date.Hour, date.Minute, date.Second, date.Millisecond); 
 DateTime from = to.AddDays(-3);// three days before
 Dictionary<String,String> properties = new  Dictionary<String,String>();
 properties.Add("okp:consulting.date", ISO8601.formatBasic(from)+","+ISO8601.formatBasic(to));

When filtering by a range of dates, you must set both values (from and to); otherwise, the filter will be ignored by OpenKM.

 To filter by a metadata field of type "multiple" like this:

<select label="Multiple" name="okp:consulting.multiple" type="multiple">
  <option label="One" value="one"/>
  <option label="Two" value="two"/>
  <option label="Three" value="three" />
</select>

 You should do:

properties.Add("okp:consulting.multiple", "one;two");

 Where "one" and "two" are valid values, and the character ";" is used as a separator.

Filter by metadata group values.

 

The search operation is done only by AND logic.

Wildcard examples:

Variable Example Description

name

test*.html

Any document that starts with the characters "test" and ends with characters ".html"

name

test?.html

Any document that starts with the characters "test" followed by a single character and ends with characters ".html"

name

?test*

Any document where the first character doesn't matter but is followed by the characters, "test".

Suggested code sample

First, you must create the webservice object:

OKMWebservices ws = OKMWebservicesFactory.newInstance(host);

Then you should log in using the "login" method. You can access the "login" method from the web service object "ws" as shown below:

ws.login(user, password);

Once you are logged in with the web services, the session is kept in the web service object. Then you can use the other API methods.

At this point you can use all the Search methods from the "search" class as shown below:

ws.search.find(qParams, null)

Methods

find

Description:

Method Return values Description

find(QueryParams queryParams, String propertiesPlugin)

List<QueryResult>

Returns a list of results filtered by the values of the queryParams parameter.


The parameter "propertiesPlugin" must be a canonical class name of the class which implements the NodeProperties interface.

Retrieving entire objects (Document, Folder, Record, Mail) from REST can take a lot of time ? the marshaling and unmarshaling process ? while you are only interested in using a few object variables. If that's your case, you can use NodeProperties classes to retrieve only the object variables you really need.

Example:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using com.openkm.sdk4csharp;
using com.openkm.sdk4csharp.bean;

namespace OKMRest
{
    public class Program
    {
        static void Main(string[] args)
        {
            String host = "http://localhost:8080/openkm";
            String username = "okmAdmin";
            String password = "admin";
            OKMWebservice ws = OKMWebservicesFactory.newInstance(host);             
try {
ws.login(user, password); QueryParams qParams = new QueryParams(); qParams.domain = QueryParams.DOCUMENT; qParams.name = "test*.html"; foreach (QueryResult qr in ws.search.find(qParams, null)) { System.Console.WriteLine(qr); } } catch (Exception e) { System.Console.WriteLine(e.ToString()); } } } }

find

Description:

Method Return values Description

find(QueryParams queryParams, String sortField, bool sortReverse, String propertiesPlugin)

List<QueryResult>

Returns a list of results filtered by the values of the queryParams parameter.


The parameter "propertiesPlugin" must be a canonical class name of the class which implements the NodeProperties interface.

Available sortField values:

SearchSortField.NAME
SearchSortField.AUTHOR
SearchSortField.LAST_MODIFIED

Retrieving entire objects (Document, Folder, Record, Mail) from REST can take a lot of time ? the marshaling and unmarshaling process ? while you are only interested in using a few object variables. If that's your case, you can use NodeProperties classes to retrieve only the object variables you really need.

Example:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using com.openkm.sdk4csharp;
using com.openkm.sdk4csharp.bean;

namespace OKMRest
{
    public class Program
    {
        static void Main(string[] args)
        {
            String host = "http://localhost:8080/openkm";
            String username = "okmAdmin";
            String password = "admin";
            OKMWebservice ws = OKMWebservicesFactory.newInstance(host);             
try {
ws.login(user, password); QueryParams _params = new QueryParams();
_params.domain = QueryParams.DOCUMENT + QueryParams.FOLDER;
_params.name = "test*";
foreach (QueryResult qr in ws.search.find(_params, SearchSortField.LAST_MODIFIED, true, null))
{
Console.WriteLine(qr.toString());
} } catch (Exception e) { System.Console.WriteLine(e.ToString()); } } } }

findPaginated

Description:

Method Return values Description

findPaginated(QueryParams queryParams, int offset, int limit, String propertiesPlugin)

ResultSet

Returns a list of paginated results filtered by the values of the queryParams parameter.

The parameters "limit" and "offset" allow you to retrieve just a portion of the results of a query.

  • The parameter "limit" is used to limit the number of results returned.
  • The parameter "offset" specifies the number of results to skip before starting to return results.
  • The parameter "propertiesPlugin" must be the canonical class name of the class which implements the NodeProperties interface.

For example, if your query has 1000 results but you only want to return the first 10, you should use these values:

  • limit=10
  • offset=0

Now suppose you want to show the results from 11-20, you should use these values:

  • limit=10
  • offset=10

Retrieving entire objects (Document, Folder, Record, Mail) from REST can take a lot of time ? the marshaling and unmarshaling process ? while you are only interested in using a few object variables. If that's your case, you can use NodeProperties classes to retrieve only the object variables you really need.

Example:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using com.openkm.sdk4csharp;
using com.openkm.sdk4csharp.bean;

namespace OKMRest
{
    public class Program
    {
        static void Main(string[] args)
        {
            String host = "http://localhost:8080/openkm";
            String username = "okmAdmin";
            String password = "admin";
            OKMWebservice ws = OKMWebservicesFactory.newInstance(host); 
try {
ws.login(user, password); QueryParams qParams = new QueryParams(); qParams.domain = QueryParams.DOCUMENT; qParams.name = "test*.html"; ResultSet rs = ws.search.findPaginated(qParams, 0, 10, null); System.Console.WriteLine("Total results:" + rs.total); foreach (QueryResult qr in rs.results) { System.Console.WriteLine(qr); } } catch (Exception e) { System.Console.WriteLine(e.ToString()); } } } }

findPaginated

Description:

Method Return values Description

findPaginated(QueryParams queryParams, String sortField, bool sortReverse, int offset, int limit, String propertiesPlugin)

ResultSet

Returns a list of paginated results filtered by the values of the queryParams parameter.


The parameter "limit" and "offset" allows you to retrieve just a portion of the results of a query.

  • The parameter "limit" is used to limit the number of results returned.
  • The parameter "offset" says to skip that many results before the beginning to return results.

The parameter "propertiesPlugin" must be the canonical class name of the class which implements the NodeProperties interface.

Available sortField values:

SearchSortField.NAME
SearchSortField.AUTHOR
SearchSortField.LAST_MODIFIED

For example if your query has 1000 results, but you only want to return the first 10, you should use these values:

  • limit=10
  • offset=0

Now suppose you want to show the results from 11-20, you should use these values:

  • limit=10
  • offset=10

Retrieving entire Objects ( Document, Folder, Record, Mail ) from REST can take a lot of time - marshalling and unmarshalling process - while you are only interesting on using only few Objects variables. If its your case you can use NodeProperties classes for retrieving the Object variables what you really need.

Example:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using com.openkm.sdk4csharp;
using com.openkm.sdk4csharp.bean;

namespace OKMRest
{
    public class Program
    {
        static void Main(string[] args)
        {
            String host = "http://localhost:8080/openkm";
            String username = "okmAdmin";
            String password = "admin";
            OKMWebservice ws = OKMWebservicesFactory.newInstance(host); 
try {
ws.login(user, password); QueryParams qParams = new QueryParams(); qParams.domain = QueryParams.DOCUMENT + QueryParams.FOLDER; qParams.name = "test*"; ResultSet rs = ws.search.findPaginated(params, SearchSortField.LAST_MODIFIED, true, 20, 10, null); System.Console.WriteLine("Total results:" + rs.total); foreach (QueryResult qr in rs.results) { System.Console.WriteLine(qr); } } catch (Exception e) { System.Console.WriteLine(e.ToString()); } } } }

findSimpleNodeBasePaginated

Description:

Method Return values Description

findSimpleNodeBasePaginated(QueryParams queryParams, int offset, int limit)

SimpleNodeBaseResultSet

Returns a list of SimpleNodeBase paginated results filtered by the values of the queryParams parameter.

Because the results of the findSimpleNodeBasePaginated method are objects of type SimpleNodeBase, this method is about 60-70% faster than the other search methods ( these metrics should be taken as orientative values because depends on hardware and the specific scenario where application is running). The other search methods returns objects of type Node what comes with a full node data, the SimpleNodeBase object provide less data but in almost cases should be enought. Specially when the limit is a higher value you will appreciate the difference in the perfomance.

The parameter "limit" and "offset" allows you to retrieve just a portion of the results of a query.

  • The parameter "limit" is used to limit the number of results returned.
  • The parameter "offset" says to skip that many results before the beginning to return results.

For example if your query has 1000 results, but you only want to return the first 10, you should use these values:

  • limit=10
  • offset=0

Now suppose you want to show the results from 11-20, you should use these values:

  • limit=10
  • offset=10

Example:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using com.openkm.sdk4csharp;
using com.openkm.sdk4csharp.bean;
using com.openkm.sdk4csharp.impl; namespace OKMRest { public class Program { static void Main(string[] args) { String host = "http://localhost:8080/openkm"; String username = "okmAdmin"; String password = "admin"; OKMWebservice ws = OKMWebservicesFactory.newInstance(host);
try {
ws.login(user, password); QueryParams qParams = new QueryParams(); qParams.domain = QueryParams.DOCUMENT; qParams.name = "test*"; SimpleNodeBaseResultSet snbrs = ws.search.findSimpleNodeBasePaginated(qp, 0, 10); System.Console.WriteLine("Total results:" + snbrs.total); foreach (SimpleNodeBase snb in snbrs.results) { System.Console.WriteLine(snb.toString()); } } catch (Exception e) { System.Console.WriteLine(e.ToString()); } } } }

findSimpleNodeBasePaginated

Description:

Method Return values Description

findSimpleNodeBasePaginated(QueryParams queryParams, String sortField, boolean sortReverse, int offset, int limit)

SimpleNodeBaseResultSet

Returns a list of SimpleNodeBase paginated results filtered by the values of the queryParams parameter.

Because the results of the findSimpleNodeBasePaginated method are objects of type SimpleNodeBase, this method is about 60-70% faster than the other search methods ( these metrics should be taken as orientative values because depends on hardware and the specific scenario where application is running). The other search methods returns objects of type Node what comes with a full node data, the SimpleNodeBase object provide less data but in almost cases should be enought. Specially when the limit is a higher value you will appreciate the difference in the perfomance.

The parameter "limit" and "offset" allows you to retrieve just a portion of the results of a query.

  • The parameter "limit" is used to limit the number of results returned.
  • The parameter "offset" says to skip that many results before the beginning to return results.

Available sortField values:

SearchSortField.NAME
SearchSortField.AUTHOR
SearchSortField.LAST_MODIFIED

For example if your query has 1000 results, but you only want to return the first 10, you should use these values:

  • limit=10
  • offset=0

Now suppose you want to show the results from 11-20, you should use these values:

  • limit=10
  • offset=10

Example:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using com.openkm.sdk4csharp;
using com.openkm.sdk4csharp.bean;
using com.openkm.sdk4csharp.impl; namespace OKMRest { public class Program { static void Main(string[] args) { String host = "http://localhost:8080/openkm"; String username = "okmAdmin"; String password = "admin"; OKMWebservice ws = OKMWebservicesFactory.newInstance(host);
try {
ws.login(user, password); QueryParams qParams = new QueryParams(); qParams.domain = QueryParams.DOCUMENT; qParams.name = "test*"; SimpleNodeBaseResultSet snbrs = ws.search.findSimpleNodeBasePaginated(params, SearchSortField.AUTHOR, true, 0, 10); System.Console.WriteLine("Total results:" + snbrs.total); foreach (SimpleNodeBase snb in snbrs.results) { System.Console.WriteLine(snb.toString()); } } catch (Exception e) { System.Console.WriteLine(e.ToString()); } } } }

getKeywordMap

Description:

Method Return values Description

getKeywordMap(String[] filter)

Dictionary<String, int>

Returns a map of keywords with its count value filtered by other keywords.

Example:

  • Doc1.txt has keywords "test", "one", "two".
  • Doc2.txt has keywords "test", "one"
  • Doc3.txt has keywords "test", "three".

The results filtering by "test" -> "one", "two", "three".

The results filtering by "one" -> "test", "two".

The results filtering by "two" -> "test", "one".

The results filtering by "three" -> "test".

The results filtering by "one" and "two" -> "test".

 

Example:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using com.openkm.sdk4csharp;
using com.openkm.sdk4csharp.bean;

namespace OKMRest
{
    public class Program
    {
        static void Main(string[] args)
        {
            String host = "http://localhost:8080/openkm";
            String username = "okmAdmin";
            String password = "admin";
            OKMWebservice ws = OKMWebservicesFactory.newInstance(host);  
             try {
ws.login(user, password); // All keywords without filtering System.Console.WriteLine("Without filtering"); Dictionary<String, int> keywords = ws.search.getKeywordMap(new String[]{"test", "test2"});
                 foreach (KeyValuePair<string,int> kvp in keywords) { System.Console.WriteLine(kvp.Key + " is used :" + kvp.Value); }
                 // Keywords filtered System.Console.WriteLine("Filtering"); keywords = ws.search.getKeywordMap(new String[]{"test"});
                 foreach (KeyValuePair<string,int> kvp in keywords) { System.Console.WriteLine(kvp.Key + " is used :" + kvp.Value); } } catch (Exception e) { System.Console.WriteLine(e.ToString()); } } } }

getCategorizedDocuments

Description:

Method Return values Description

getCategorizedDocuments(String categoryId)

List<Document>

Retrieves a list of all documents related with a category.

The values of the categoryId parameter should be a category folder UUID or path.

Example:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using com.openkm.sdk4csharp;
using com.openkm.sdk4csharp.bean;

namespace OKMRest
{
    public class Program
    {
        static void Main(string[] args)
        {
            String host = "http://localhost:8180/openkm";
            String username = "okmAdmin";
            String password = "admin";
            OKMWebservice ws = OKMWebservicesFactory.newInstance(host);  
             try {
ws.login(user, password); foreach (Document doc in ws.search.getCategorizedDocuments("50b7a5b9-89d2-430e-bbc9-6a6e01662a71")) { System.Console.WriteLine(doc); } } catch (Exception e) { System.Console.WriteLine(e.ToString()); } } } }

saveSearch

Description:

Method Return values Description

saveSearch(QueryParams params)

Long

Saves search parameters.

The variable queryName of the parameter params should have to be initialized.

Example:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using com.openkm.sdk4csharp;
using com.openkm.sdk4csharp.bean;

namespace OKMRest
{
    public class Program
    {
        static void Main(string[] args)
        {
            String host = "http://localhost:8080/openkm";
            String username = "okmAdmin";
            String password = "admin";
            OKMWebservice ws = OKMWebservicesFactory.newInstance(host);             
             try {
ws.login(user, password); QueryParams qParams = new QueryParams(); qParams.domain = QueryParams.DOCUMENT; qParams.name = "test*.html";
                 foreach (QueryResult qr in ws.search.find(qParams)) { System.Console.WriteLine(qr); }
                 // Save the search to be used later qParams.queryName = "sample search"; ws.search.saveSearch(qParams); } catch (Exception e) { System.Console.WriteLine(e.ToString()); } } } }

updateSearch

Description:

Method Return values Description

updateSearch(QueryParams params)

void

Updates a previously saved search parameters.

Ir can only be updated as a saved search created by the same user who's executing the method.

Example:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using com.openkm.sdk4csharp;
using com.openkm.sdk4csharp.bean;

namespace OKMRest
{
    public class Program
    {
        static void Main(string[] args)
        {
            String host = "http://localhost:8080/openkm";
            String username = "okmAdmin";
            String password = "admin";
            OKMWebservice ws = OKMWebservicesFactory.newInstance(host); 
             try {
ws.login(user, password); foreach (QueryParams qParams in ws.search.getAllSearchs()) { if (qParams.queryName.Equals("sample search")) { // Change some value. qParams.name = "admin*.html"; ws.search.updateSearch(qParams); } } } catch (Exception e) { System.Console.WriteLine(e.ToString()); } } } }

getSearch

Description:

Method Return values Description

getSearch(int qpId)

QueryParams

Gets saved searches parameters.

It can only be retrieved as a saved search created by the same user who's executing the method.

Example:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using com.openkm.sdk4csharp;
using com.openkm.sdk4csharp.bean;

namespace OKMRest
{
    public class Program
    {
        static void Main(string[] args)
        {
            String host = "http://localhost:8080/openkm";
            String username = "okmAdmin";
            String password = "admin";
            OKMWebservice ws = OKMWebservicesFactory.newInstance(host); 
             try {
ws.login(user, password); int qpId = 1; // Some valid search id QueryParams qParams = ws.search.getSearch(qpId); System.Console.WriteLine(qParams); } catch (Exception e) { System.Console.WriteLine(e.ToString()); } } } }

getAllSearchs

Description:

Method Return values Description

getAllSearchs()

List<QueryParams>

Retrieves a list of all saved search parameters.

It can only retrieve the list of the saved searches created by the same user who's executing the method.

Example:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using com.openkm.sdk4csharp;
using com.openkm.sdk4csharp.bean;

namespace OKMRest
{
    public class Program
    {
        static void Main(string[] args)
        {
            String host = "http://localhost:8080/openkm";
            String username = "okmAdmin";
            String password = "admin";
            OKMWebservice ws = OKMWebservicesFactory.newInstance(host); 
             try {
ws.login(user, password); foreach (QueryParams qParams in ws.search.getAllSearchs()) { System.Console.WriteLine(qParams.queryName); } } catch (Exception e) { System.Console.WriteLine(e.ToString()); } } } }

deleteSearch

Description:

Method Return values Description

deleteSearch(int qpId)

void

Deletes a saved search parameters.

It can only be deleted as a saved search created by the same user who's executing the method.

Example:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using com.openkm.sdk4csharp;

namespace OKMRest
{
    public class Program
    {
        static void Main(string[] args)
        {
            String host = "http://localhost:8080/openkm";
            String username = "okmAdmin";
            String password = "admin";
            OKMWebservice ws = OKMWebservicesFactory.newInstance(host); 
             try {
ws.login(user, password); int qpId = 1; // Some valid search id ws.search.deleteSearch(qpId); } catch (Exception e) { System.Console.WriteLine(e.ToString()); } } } }

findByQueryPaginated

Description:

Method Return values Description

findByQueryPaginated(String query, String sortField, boolean sortReverse, int offset, int limit, String propertiesPlugin)

ResultSet

Returns a list of paginated results filtered by the values of the query parameter.

The syntax to use in the statement parameter is the pair 'field:value'. For example:

  • "name:grial" is filtering field name by word grial.

More information about lucene sintaxis at Lucene query syntax.


Available sortField values:

SearchSortField.NAME
SearchSortField.AUTHOR
SearchSortField.LAST_MODIFIED

The parameter "limit" and "offset" allows you to retrieve just a portion of the results of a query.

  • The parameter "limit" is used to limit the number of results returned.
  • The parameter "offset" says to skip that many results before the beginning to return results.

The parameter "propertiesPlugin" must be the canonical class name of the class which implements the NodeProperties interface.

For example if your query has 1000 results, but you only want to return the first 10, you should use these values:

  • limit=10
  • offset=0

Now suppose you want to show the results from 11-20, you should use these values:

  • limit=10
  • offset=10

Example:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using com.openkm.sdk4csharp;
using com.openkm.sdk4csharp.bean;

namespace OKMRest
{
    public class Program
    {
        static void Main(string[] args)
        {
            String host = "http://localhost:8080/openkm";
            String username = "okmAdmin";
            String password = "admin";
            OKMWebservice ws = OKMWebservicesFactory.newInstance(host); 
             try {
ws.login(user, password); ResultSet rs = ws.search.findByQueryPaginated("text:grial AND name:t*.pdf", SearchSortField.NAME, true, 0, 10, null);
Console.WriteLine("Total results:" + rs.total.ToString());
foreach (QueryResult qr in rs.results)
{
Console.WriteLine(qr.toString());
} } catch (Exception e) { System.Console.WriteLine(e.ToString()); } } } }

findSimpleNodeBaseByQueryPaginated

Description:

Method Return values Description

findSimpleNodeBaseByQueryPaginated(String query, int offset, int limit)

SimpleNodeBaseResultSet

Returns a list of paginated results filtered by the values of the query parameter.

The syntax to use in the statement parameter is the pair 'field:value'. For example:

  • "name:grial" is filtering field name by word grial.

More information about lucene sintaxis at Lucene query syntax.

The parameter "limit" and "offset" allows you to retrieve just a portion of the results of a query.

  • The parameter "limit" is used to limit the number of results returned.
  • The parameter "offset" says to skip that many results before the beginning to return results.

For example if your query has 1000 results, but you only want to return the first 10, you should use these values:

  • limit=10
  • offset=0

Now suppose you want to show the results from 11-20, you should use these values:

  • limit=10
  • offset=10

Example:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using com.openkm.sdk4csharp;
using com.openkm.sdk4csharp.bean;

namespace OKMRest
{
    public class Program
    {
        static void Main(string[] args)
        {
            String host = "http://localhost:8080/openkm";
            String username = "okmAdmin";
            String password = "admin";
            OKMWebservice ws = OKMWebservicesFactory.newInstance(host); 
             try {
ws.login(user, password); SimpleNodeBaseResultSet snbr = ws.search.findSimpleNodeBaseByQueryPaginated("text:grial AND name:t*.pdF", 0, 10);

foreach (SimpleNodeBase nodeBase in snbr.results)
{
if(nodeBase != null)
{
System.Console.WriteLine(nodeBase.toString());
}
} } catch (Exception e) { System.Console.WriteLine(e.ToString()); } } } }

findSimpleNodeBaseByQueryPaginated

Description:

Method Return values Description

findSimpleNodeBaseByQueryPaginated(String query, String sortField, bool sortReverse, int offset, int limit)

SimpleNodeBaseResultSet

Returns a list of paginated results filtered by the values of the query parameter.

The syntax to use in the statement parameter is the pair 'field:value'. For example:

  • "name:grial" filters the name field by the word "grial".

More information about Lucene syntax at Lucene query syntax.

Available sortField values:

SearchSortField.NAME
SearchSortField.AUTHOR
SearchSortField.LAST_MODIFIED

The parameters "limit" and "offset" allow you to retrieve just a portion of the results of a query.

  • The parameter "limit" is used to limit the number of results returned.
  • The parameter "offset" specifies how many results to skip before returning results.

For example, if your query has 1000 results but you only want to return the first 10, you should use these values:

  • limit=10
  • offset=0

Now suppose you want to show the results from 11-20, you should use these values:

  • limit=10
  • offset=10

Example:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using com.openkm.sdk4csharp;
using com.openkm.sdk4csharp.bean;

namespace OKMRest
{
    public class Program
    {
        static void Main(string[] args)
        {
            String host = "http://localhost:8080/openkm";
            String username = "okmAdmin";
            String password = "admin";
            OKMWebservice ws = OKMWebservicesFactory.newInstance(host); 
             try {
ws.login(user, password);
SimpleNodeBaseResultSet snbr= ws.search.findSimpleNodeBaseByQueryPaginated("text:grial AND name:t*.pdF", SearchSortField.NAME, true, 0, 10);

foreach (SimpleNodeBase nodeBase in snbr.results)
{
if(nodeBase != null)
{
System.Console.WriteLine(nodeBase.toString());
}
} } catch (Exception e) { System.Console.WriteLine(e.ToString()); } } } }

findByQuery

Description:

Method Return values Description

findByQuery(String query, String propertiesPlugin)

List<QueryResult>

Returns a list of results filtered by the values of the query parameter.


The parameter "propertiesPlugin" must be a canonical class name of the class which implements the NodeProperties interface.

Retrieving entire Objects ( Document, Folder, Record, Mail ) from REST can take a lot of time - the marshalling and unmarshalling process - while you are only interested in using a few Objects variables. If this is your case, you can use NodeProperties classes to retrieve the Object variables that you really need.

The syntax to use in the statement parameter is the pair 'field:value'. For example:

  • "name:grial" filters the name field by the word "grial".

More information about Lucene syntax at Lucene query syntax.

Example:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using com.openkm.sdk4csharp;
using com.openkm.sdk4csharp.bean;

namespace OKMRest
{
    public class Program
    {
        static void Main(string[] args)
        {
            String host = "http://localhost:8080/openkm";
            String username = "okmAdmin";
            String password = "admin";
            OKMWebservice ws = OKMWebservicesFactory.newInstance(host);
try {
ws.login(user, password); foreach (QueryResult qr in ws.search.findByQuery("keyword:test AND name:t*.pdf", null)) { System.Console.WriteLine(qr); } } catch (Exception e) { System.Console.WriteLine(e.ToString()); } } } }

findByQuery

Description:

Method Return values Description

findByQuery(String query, String sortField, bool sortReverse, String propertiesPlugin)

List<QueryResult>

Returns a list of results filtered by the query parameter.

The syntax to use in the statement parameter is the pair 'field:value'. For example:

  • "name:grial" filters the name field by the word "grial".

More information about Lucene syntax at Lucene query syntax.

Available sortField values:

SearchSortField.NAME
SearchSortField.AUTHOR
SearchSortField.LAST_MODIFIED

The parameter "propertiesPlugin" must be the canonical class name of the class which implements the NodeProperties interface.

Example:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using com.openkm.sdk4csharp;
using com.openkm.sdk4csharp.bean;

namespace OKMRest
{
    public class Program
    {
        static void Main(string[] args)
        {
            String host = "http://localhost:8080/openkm";
            String username = "okmAdmin";
            String password = "admin";
            OKMWebservice ws = OKMWebservicesFactory.newInstance(host);
try {
ws.login(user, password); foreach (QueryResult qr in ws.search.findByQuery("keyword: test", SearchSortField.NAME, true, null)) { System.Console.WriteLine(qr); } } catch (Exception e) { System.Console.WriteLine(e.ToString()); } } } }

findWithMetadata

Description:

Method Return values Description

findWithMetadata(QueryParams _params, String propertiesPlugin, List<String> groups)

List<QueryResult>

Returns a list of results with metadata values filtered by the queryParams parameter.

  • The parameter "propertiesPlugin" must be a canonical class name of the class which implements the NodeProperties interface.
  • The parameter "groups" must be valid metadata group names.

Retrieving entire Objects ( Document, Folder, Record, Mail ) from REST can take a lot of time - the marshalling and unmarshalling process - while you are only interested in using a few Objects variables. If this is your case, you can use NodeProperties classes to retrieve the Object variables that you really need.

Example:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using com.openkm.sdk4csharp;
using com.openkm.sdk4csharp.bean;

namespace OKMRest
{
    public class Program
    {
        static void Main(string[] args)
        {
            String host = "http://localhost:8080/openkm";
            String username = "okmAdmin";
            String password = "admin";
            OKMWebservice ws = OKMWebservicesFactory.newInstance(host); 
             try {
ws.login(user, password);
// QueryParams
QueryParams qp = new QueryParams();
qp.folderRecursive = true;
qp.domain = QueryParams.DOCUMENT | QueryParams.FOLDER | QueryParams.RECORD | QueryParams.MAIL;
qp.name = "test*";

// Properties
Dictionary<string, string> properties = new Dictionary<string, string>();
properties.Add("okp:consulting.name", "test");
qp.properties = properties;

// Groups
List<string> groups = new List<string>();
groups.Add("okg:consulting");

List<QueryResult> queryResults = ws.search.findWithMetadata(qp, null, groups);
foreach (QueryResult qResult in queryResults)
{
System.Console.WriteLine(qResult.toString());
} } catch (Exception e) { System.Console.WriteLine(e.ToString()); } } } }

findWithMetadata

Description:

Method Return values Description

findWithMetadata(QueryParams queryParams, String sortField, bool sortReverse, String propertiesPlugin, List<String> groups)

List<QueryResult>

Returns a list of results with metadata values filtered by the queryParams parameter.

  • The parameter "propertiesPlugin" must be a canonical class name of the class which implements the NodeProperties interface.
  • The parameter "groups" must be valid metadata group names.

Available sortField values:

SearchSortField.NAME
SearchSortField.AUTHOR
SearchSortField.LAST_MODIFIED

Retrieving entire Objects ( Document, Folder, Record, Mail ) from REST can take a lot of time - the marshalling and unmarshalling process - while you are only interested in using a few Objects variables. If this is your case, you can use NodeProperties classes to retrieve the Object variables that you really need.

Example:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using com.openkm.sdk4csharp;
using com.openkm.sdk4csharp.bean;

namespace OKMRest
{
    public class Program
    {
        static void Main(string[] args)
        {
            String host = "http://localhost:8080/openkm";
            String username = "okmAdmin";
            String password = "admin";
            OKMWebservice ws = OKMWebservicesFactory.newInstance(host); 
             try {
ws.login(user, password);
// QueryParams
QueryParams qp = new QueryParams();
qp.folderRecursive = true;
qp.domain = QueryParams.DOCUMENT | QueryParams.FOLDER | QueryParams.RECORD | QueryParams.MAIL;
qp.name = "test*";

// Properties
Dictionary<string, string> properties = new Dictionary<string, string>();
properties.Add("okp:consulting.name", "test");
qp.properties = properties;

// Groups
List<string> groups = new List<string>();
groups.Add("okg:consulting");

List<QueryResult> queryResults = ws.search.findWithMetadata(qp, SearchSortField.NAME, true, null, groups);
foreach (QueryResult qr in queryResults)
{
Console.WriteLine(qr.toString());
} } catch (Exception e) { System.Console.WriteLine(e.ToString()); } } } }

findWithMetadataPaginated

Description:

Method Return values Description

findWithMetadataPaginated(QueryParams queryParams, int offset, int limit, String propertiesPlugin, List<String> groups)

ResultSet

Returns a list of paginated results with metadata values filtered by the queryParams parameter.

The parameters "limit" and "offset" allow you to retrieve just a portion of the results of a query.

  • The parameter "limit" is used to limit the number of results returned.
  • The parameter "offset" specifies how many results to skip before returning results.
  • The parameter "propertiesPlugin" must be the canonical class name of the class which implements the NodeProperties interface.
  • The parameter "groups" must be valid metadata group names.

For example, if your query has 1000 results but you only want to return the first 10, you should use these values:

  • limit=10
  • offset=0

Now, suppose you want to show the results from 11-20, you should use these values:

  • limit=10
  • offset=10

Retrieving entire Objects ( Document, Folder, Record, Mail ) from REST can take a lot of time - the marshalling and unmarshalling process - while you are only interested in using a few Object variables. If this is your case, you can use NodeProperties classes to retrieve the Object variables that you really need.

Example:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using com.openkm.sdk4csharp;
using com.openkm.sdk4csharp.bean;

namespace OKMRest
{
    public class Program
    {
        static void Main(string[] args)
        {
            String host = "http://localhost:8080/openkm";
            String username = "okmAdmin";
            String password = "admin";
            OKMWebservice ws = OKMWebservicesFactory.newInstance(host); 
             try {
ws.login(user, password);
// QueryParams
QueryParams qp = new QueryParams();
qp.domain = QueryParams.DOCUMENT | QueryParams.FOLDER | QueryParams.RECORD | QueryParams.MAIL;
qp.name = "test*";

// Properties
Dictionary<string, string> properties = new Dictionary<string, string>();
properties.Add("okp:consulting.name", "test");
qp.properties = properties;

// Groups
List<string> groups = new List<string>();
groups.Add("okg:consulting");

ResultSet resulSet = ws.search.findWithMetadataPaginated(qp, 0, 10, null, groups);
System.Console.WriteLine("Total results: " + rs.total.ToString()); } catch (Exception e) { System.Console.WriteLine(e.ToString()); } } } }

findWithMetadataPaginated

Description:

Method Return values Description

findWithMetadataPaginated(QueryParams queryParams, String sortField, bool sortReverse, int offset, int limit, String propertiesPlugin, List<String> groups)

ResultSet

Returns a list of paginated results with metadata values filtered by the queryParams parameter.

The parameters "limit" and "offset" allow you to retrieve just a portion of the results of a query.

  • The parameter "limit" is used to limit the number of results returned.
  • The parameter "offset" says to skip that many results before the beginning to return results.

The parameter "propertiesPlugin" must be the canonical class name of the class which implements the NodeProperties interface.

The parameter "groups" must be valid metadata group names.

Available sortField values:

SearchSortField.NAME
SearchSortField.AUTHOR
SearchSortField.LAST_MODIFIED

For example if your query has 1000 results, but you only want to return the first 10, you should use these values:

  • limit=10
  • offset=0

Now suppose you want to show the results from 11-20, you should use these values:

  • limit=10
  • offset=10

Retrieving entire Objects ( Document, Folder, Record, Mail ) from REST can take a lot of time - the marshalling and unmarshalling process - while you are only interested in using a few Objects variables. If this is your case, you can use NodeProperties classes to retrieve the Object variables that you really need.

Example:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using com.openkm.sdk4csharp;
using com.openkm.sdk4csharp.bean;

namespace OKMRest
{
    public class Program
    {
        static void Main(string[] args)
        {
            String host = "http://localhost:8080/openkm";
            String username = "okmAdmin";
            String password = "admin";
            OKMWebservice ws = OKMWebservicesFactory.newInstance(host); 
             try {
ws.login(user, password);
// QueryParams
QueryParams qp = new QueryParams();
qp.domain = QueryParams.DOCUMENT | QueryParams.FOLDER | QueryParams.RECORD | QueryParams.MAIL;
qp.name = "test*";

// Properties
Dictionary<string, string> properties = new Dictionary<string, string>();
properties.Add("okp:consulting.name", "test");
qp.properties = properties;

// Groups
List<string> groups = new List<string>();
groups.Add("okg:consulting");

ResultSet rs = ws.search.findWithMetadataPaginated(qp, SearchSortField.AUTHOR, true, 0, 10, null, groups);
Console.WriteLine("Total results: " + rs.total.ToString());
foreach (QueryResult qr in rs.results)
{
Console.WriteLine(qr.toString());
} } catch (Exception e) { System.Console.WriteLine(e.ToString()); } } } }

getMimeTypes

Description:

Method Return values Description

getMimeTypes()

List<MimeType>

Retrieves a list of MIME types.

Only the MIME types that may be used in the search will be retrieved.

Example:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using com.openkm.sdk4csharp;
using com.openkm.sdk4csharp.bean;

namespace OKMRest
{
    public class Program
    {
        static void Main(string[] args)
        {
            String host = "http://localhost:8080/openkm";
            String username = "okmAdmin";
            String password = "admin";
            OKMWebservice ws = OKMWebservicesFactory.newInstance(host); 
             try {
ws.login(user, password);
foreach (MimeType mimeType in ws.search.getMimeTypes())
{
System.Console.WriteLine(mimeType.toString());
} } catch (Exception e) { System.Console.WriteLine(e.ToString()); } } } }

csvExport

Description:

Method Return values Description

csvExport(String lang, QueryParams queryParams, bool compact)

InputStream

Exports a list of results as a CSV file filtered by the values of the queryParams parameter.

The parameter lang must be ISO 639-1 compliant.

Example:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using com.openkm.sdk4csharp;
using com.openkm.sdk4csharp.bean;

namespace OKMRest
{
    public class Program
    {
        static void Main(string[] args)
        {
            String host = "http://localhost:8080/openkm";
            String username = "okmAdmin";
            String password = "admin";
            OKMWebservice ws = OKMWebservicesFactory.newInstance(host); 
             try {
ws.login(user, password);
QueryParams _params = new QueryParams();
_params.domain = QueryParams.DOCUMENT + QueryParams.FOLDER;
_params.name = "test*";
Stream stream = ws.search.csvExport("es-ES", _params, false);
FileStream destFile = new FileStream("C:\\Testing\\export.csv", FileMode.OpenOrCreate);
stream.CopyTo(destFile);
destFile.Dispose();
stream.Dispose(); } catch (Exception e) { System.Console.WriteLine(e.ToString()); } } } }