Search samples
Basics
Most methods use QueryParams here there're some tips about how to use them.
Variables | Type | Allow wildcards | Restrictions | Description |
---|---|---|---|---|
domain |
long |
No. |
Available values:
By default the value is set to QueryParams.DOCUMENT. For searching documents and folders use value:
|
Restrict the search to a node type. |
author |
String |
No. |
The value must be a valid userId. |
Filter by creator user. |
name |
String |
Yes. |
|
Filter by node name. |
title |
String |
Yes. |
Filter by title name. | |
keywords |
List<String> |
Yes. |
|
Filter by keywords. |
categories |
List<String> |
No. |
Values should be categories UUID, not use path value. |
Filter by categories. |
content |
Yes. |
Filter by binary content. |
||
mimeType |
No. |
The value should be a valid and registered MIME type. Only can be applied to documents node. |
Filter by document MIME type. | |
language |
No. |
The value should be a valid language. Only can be applied to documents node. |
Filter by document language. |
|
folder |
No. |
When empty is used by default "/okm:root" node. The value should be a valid UUID, not use a path value. |
Filter by a folder. |
|
folderRecursive |
Boolean |
No. |
It only makes sense to set this variable to true when the variable folder is not empty. |
Enable filter recursively 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 mail subject field. |
mailFrom |
String |
Yes. |
Only applies to mail nodes. |
Filter by mail from the field. |
mailTo |
Yes. |
Only applies to mail nodes. |
Filter by mail to the field. |
|
notes |
Yes. |
Filter by notes. |
||
properties |
Dictionary<String, String> |
Yes on almost. |
On metadata field values like "date" cannot be applied wildcards. The dictionary of the properties is composed of pairs: ('metadata_field_name','metada_field_value") For example:
Filtering by a range of dates:
When filtering by a range of dates you must set both values ( from and to ), otherwise, the filter will be ignored from OpenKM side. To filtering by a metadata field of type multiple like this:
You should do:
Where "one" and "two" are valid values and 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". |
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 - marshaling and unmarshalling process - while you are only interesting on using only a few Objects variables. If it's 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;
qParams.name = "test*.html";
foreach (QueryResult qr in ws.find(qParams, null))
{
System.Console.WriteLine(qr);
}
}
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 parameter "limit" and "offset" allows you to retrieve just a portion of the results of a query.
For example, if your query have 1000 results, but you only want to return the first 10, you should use these values:
Now suppose you want to show the results from 11-20, you should use these values:
Retrieving entire Objects ( Document, Folder, Record, Mail ) from REST can take a lot of time - marshaling and unmarshalling process - while you are only interesting on using only a few Objects variables. If it's 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;
qParams.name = "test*.html";
ResultSet rs = ws.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());
}
}
}
}
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:
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.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.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.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.find(qParams))
{
System.Console.WriteLine(qr);
}
// Save the search to be used later
qParams.queryName = "sample search";
ws.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.getAllSearchs())
{
if (qParams.queryName.Equals("sample search"))
{
// Change some value.
qParams.name = "admin*.html";
ws.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.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.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.deleteSearch(qpId);
}
catch (Exception e)
{
System.Console.WriteLine(e.ToString());
}
}
}
}
findByQueryPaginated
Description:
Method | Return values | Description |
---|---|---|
findByQueryPaginated(int offset, int limit, String query, String propertiesPlugin) |
ResultSet |
Returns a list of paginated results filtered by the values of the parameters. |
The parameter "limit" and "offset" allows you to retrieve just a portion of the results of a query.
For example, if your query has 1000 results, but you only want to return the first 10, you should use these values:
Now suppose you want to show the results from 11-20, you should use these values:
|
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.findByQueryPaginated(0, 10 ,"name:t*.pdf", 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());
}
}
}
}
findByQuery
Description:
Method | Return values | Description |
---|---|---|
findByQuery(String query, 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 - marshaling and unmarshalling process - while you are only interesting on using only a few Objects variables. If it's your case you can use NodeProperties classes for retrieving the Object variables what you really need. The syntax to use in the statement parameter is the pair 'field:value'. For example:
More information about lucene sintaxis 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.findByQuery("keyword:test AND name:t*.pdf", null))
{
System.Console.WriteLine(qr);
}
}
catch (Exception e)
{
System.Console.WriteLine(e.ToString());
}
}
}
}
findAllDefaultByNodeClass
Description:
Method | Return values | Description |
---|---|---|
findAllDefaultByNodeClass(long ncId) |
List<QueryParams> |
Retrieve a list of saved searches of a NodeClass. |
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);
long ncId = 1;
List<QueryParams> queryParams = ws.findAllDefaultByNodeClass(ncId);
foreach (QueryParams qParams in queryParams)
{
System.Console.WriteLine(qParams.queryName);
}
}
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. |
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
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.findWithMetadata(qp, null, groups);
foreach (QueryResult qResult in queryResults)
{
System.Console.WriteLine(qResult.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 parameter "limit" and "offset" allows you to retrieve just a portion of the results of a query.
For example if your query has 1000 results, but you only want to return the first 10, you should use these values:
Now suppose you want to show the results from 11-20, you should use these values:
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
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.findWithMetadataPaginated(qp, 0, 10, null, groups);
System.Console.WriteLine("Total results: " + rs.total.ToString());
}
catch (Exception e)
{
System.Console.WriteLine(e.ToString());
}
}
}
}