Search samples

Basics

Most methods use QueryParams here there're some clues about how using it.

VariablesTypeAllow wildcardsRestrictionsDescription

domain

long

No.

Available values:

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

By default the value is set to QueryParams.DOCUMENT.

For searching documents and folders use value:

(QueryParams.DOCUMENT | QueryParams.FOLDER) 

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.

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 a documents node.

Filter by document MIME type.

path

 

No.

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

Filter 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.

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:

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 from OpenKM side.

 To filtering 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 character ";" is used as a separator.

Filter by metadata group values.

 

The search operation is done only by AND logic.

Wildcard examples:

VariableExampleDescription

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 the documents where the first character doesn't matter but is followed by the characters, "test".

Methods

findByContent

Description:

MethodReturn valuesDescription

findByContent(String content)

List<QueryResult>

Returns a list of results filtered by the value of the content parameter.

The method only searches among all documents, it does not take in consideration any other kind of nodes.

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, username, password);
             try { foreach (QueryResult qr in ws.findByContent("test")) { System.Console.WriteLine(qr); } } catch (Exception e) { System.Console.WriteLine(e.ToString()); } } } }

findByName

Description:

MethodReturn valuesDescription

findByName(String name)

List<QueryResult>

Returns a list of results filtered by the value of the name parameter.

The method only searches among all documents, it does not take in consideration any other kind of nodes.

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, username, password);
             try { foreach (QueryResult qr in ws.findByName("?test*")) { System.Console.WriteLine(qr);                 } } catch (Exception e) { System.Console.WriteLine(e.ToString()); } } } }

findByKeywords

Description:

MethodReturn valuesDescription

findByKeywords(List<String> keywords)

List<QueryResult>

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

The method only searches among all documents, it does not take in consideration any other kind of nodes.

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, username, password);
             try { List<string> keywords = new List<string>(); keywords.Add("test");
foreach (QueryResult qr in ws.findByKeywords(keywords)) { System.Console.WriteLine(qr);                 } } catch (Exception e) { System.Console.WriteLine(e.ToString()); } } } }

find

Description:

MethodReturn valuesDescription

find(QueryParams queryParams)

List<QueryResult>

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

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, username, password);
             try { QueryParams qParams = new QueryParams(); qParams.domain = QueryParams.DOCUMENT; qParams.name = "test*.html";
                 foreach (QueryResult qr in ws.find(qParams)) { System.Console.WriteLine(qr); } } catch (Exception e) { System.Console.WriteLine(e.ToString()); } } } }

findPaginated

Description:

MethodReturn valuesDescription

findPaginated(QueryParams queryParams, int offset, int limit)

ResultSet

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

The parameter "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.

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:8180/OpenKM";
            String username = "okmAdmin";
            String password = "admin";
            OKMWebservice ws = OKMWebservicesFactory.newInstance(host, username, password);
             try { QueryParams qParams = new QueryParams(); qParams.domain = QueryParams.DOCUMENT; qParams.name = "test*.html"; ResultSet rs = ws.findPaginated(qParams, 20, 10); 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()); } } } }

findSimpleQueryPaginated

Description:

MethodReturn valuesDescription

findSimpleQueryPaginated(String statement, int offset, int limit)

ResultSet

Returns a list of paginated results filtered by the values of the statement 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 syntaxis at Lucene query syntax.

 

The parameter "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.

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, username, password);
             try { ResultSet rs = ws.findSimpleQueryPaginated(20, 10, "name:grial"); 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()); } } } }

findMoreLikeThis

Description:

MethodReturn valuesDescription

findMoreLikeThis(String uuid, int max)

ResultSet

Returns a list of documents that are considered similar by the search engine.

The uuid is a document UUID.

The max value is used to limit the number of results returned.

The method can only be used with documents.

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, username, password);
             try { ResultSet rs = ws.findMoreLikeThis("c5cb1982-1a99-4741-8a07-a319b9ac3459", 100); 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:

MethodReturn valuesDescription

getKeywordMap(String[] filter)

Dictionary<String, Integer>

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, username, password);
             try { // 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:

MethodReturn valuesDescription

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, username, password);
             try { foreach (Document doc in ws.getCategorizedDocuments("/okm:categories/invoices")) { System.Console.WriteLine(doc); } } catch (Exception e) { System.Console.WriteLine(e.ToString()); } } } }

saveSearch

Description:

MethodReturn valuesDescription

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, username, password);
            
            try
            {
                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:

MethodReturn valuesDescription

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, username, password);
            
            try
            {
                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:

MethodReturn valuesDescription

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, username, password);
            
            try
            {
                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:

MethodReturn valuesDescription

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, username, password);
            
            try
            {
                foreach (QueryParams qParams in ws.getAllSearchs())
                {
                    System.Console.WriteLine(qParams);
                }
            } 
            catch (Exception e)
            {
                System.Console.WriteLine(e.ToString());
            } 
        }
    }
}

deleteSearch

Description:

MethodReturn valuesDescription

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, username, password);
            
            try
            {
                int qpId = 1; // Some valid search id
                ws.deleteSearch(qpId);
            } 
            catch (Exception e)
            {
                System.Console.WriteLine(e.ToString());
            } 
        }
    }
}

findByQuery

Description:

MethodReturn valuesDescription

findByQuery(String query)

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" is filtering field name by word grial.

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, username, password);
            
            try
            {
                 List<QueryResult> rs= ws.findByQuery("keyword:test AND name:t*.pdf"); 

                 foreach (QueryResult qr in rs.results)
                 {
                      System.Console.WriteLine(qr);
                 }
            } 
            catch (Exception e)
            {
                System.Console.WriteLine(e.ToString());
            } 
        }
    }
}

findByQueryPaginated

Description:

MethodReturn valuesDescription

findByQueryPaginated(String query, int offset, int limit)

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.

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, username, password);
            
            try
            {
                 ResultSet rs = ws.findByQueryPaginated("name:grial", 0, 10);
                 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());
            } 
        }
    }
}