The following software components, published on Siets.net website and in Siets software documentation resources:
are provided as open source technology within Siets software, licensed under the open source MIT licence terms:
"Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software."
Customers can include Siets API software and/or sample code into their application software, freely modify it and distribute along their application software code.
Siets REST API concept is a platform independent software programming method for easy integration of Siets Server in your IT software stack.
Siets API messaging is based on very simple and performance-efficient REST protocol concept.
There are only two main types of HTTP messages in the Siets API protocol:
Siets XML_request and Siets XML_reply are simple XML 1.0 formatted messages sent over HTTP protocol, using standard GET or POST methods of HTTP protocol.
Siets XML_request message is a standard "envelope" where your data and commands are sent over the network to Siets Server.
Siets XML_reply message is a standard "envelope" where Siets Server responds to your API call by sending reply or results.
This plain client-server messaging method guarantees simplicity and efficiency between client application software and Siets Server, avoiding unnecessary data conversions and delivering fastest performance.
You can create, send, receive and parse Siets XML messages XML_request and Siets XML_reply directly in your application code without using additional API libraries in high level programming languages (such as Java, PHP, .NET etc). Adding extra middleware "wrappers" makes business logic less transparent, causes proliferation of data copies in computer memory and degrades performance.
Please see formatting details for XML_request and XML_replay message envelopes in:
Use Siets API commands and your favorite programming language to access powerful Siets Server search and data manipulation functionality in cross-platform way.
Siets API calls are very similar to more complex web messaging services, yet Siets API protocol does not require SOAP or more advanced web-services document definition schemes to operate, avoiding any extra layer of complexity. It is using plain REST API calls with different Siets API commands for each Siets Server function.
Siets API protocol message XML_request must contain mandatory tag <command> telling Siets Server which specific API command to execute and how to interpret XML_request payload tags as parameters.
Siets Server always returns a message XML_reply containing results for each XML_request command, executed server side.
Here are the list of main Siets API commands supported by Siets Server:
API command | Functionality description |
insert | add a document to the Siets storage with unique id |
update | update or add a document to the Siets storage |
replace | replace the document in Siets storage using known document id |
delete |
delete the document from Siets storage using known document id |
index |
tells the Siets server to start the process of indexing immediately, overriding default background indexing of updates |
set_scheme | sets the document structure
definition to the Siets storage. Used for flexible relevancy
assignment within a document, selecting indexing method, and other customizations |
get_scheme |
retrieves document structure definition from the Siets storage |
retrieve |
returns a document from the Siets storage by known id |
lookup | search for the document in the Siets storage and return it if exists |
search | processes full text search queries in Siets. The most powerful command with many features and options. Please see its detailed description in Developer Guide, Section 4..5.2. |
select | search for a list of document identifiers using identifiers or
wild cards. Unlike retrieve, lookup and search this command always
returns only document IDs. Convenient for application developers
and system maintenance tasks.
|
similar | searches for similar documents in the Siets storage to a given textual information (content). |
alternatives | returns spell-checking suggestions for words using accumulated index (fuzzy search) |
list-last | searches for documents most recently added or modified using insert, update or replace commands |
status | returns status information about each Siets server instance (storage). The status
information includes number of documents in the Siets storage, number
of unique words in the vocabulary, total number of words in the Siets
storage, number of executed API commands since the last startup of the
instance, number of errors that have occurred since the last startup of
the instance, software version, indexing status etc. This is useful and one of the most frequently called API commands. |
Each specific <command> can have additional parameters in the message payload listed within another XML tag <content> in the message envelope XML_request.
This payload is command specific and may contain multiple different XML tags as parameter values for the API command.
Please see Developer Guide describing in details every parameter and its use for specific Siets API commands.
The list of main Siets API commands is being periodically updated as new Siets Server functionality is being added.
Please see Developer's Guide and release notes for latest Siets Server versions to see if there are new API commands.
Note: If you can not find your favorite language below, please use REST API and built-in HTTP/HTTPs tools in your language of choice.
Programming Language | Description of sample code |
---|---|
REST |
Sample search form that works with Siets API: search.html
XSLT stylesheet for default web results: XSLT stylesheet for result formatting in HTML - url_encode.xsl Use this as a standard web services method, that would work from virtually any known programming language in client applications, since most programming languages are supporting 'http/https POST/GET' (eg. through 'curl' requests or http protocol libraries)
|
C |
Importing text files in C using HTTP API: import.c Importing files of different formats using HTTP API built-in conversion tool: import_conv .c SIETS HTTP API client library for C/C++ applications under MS Windows: scbapi.zip |
PHP |
Sample Web form demonstrating file upload: import_conv.php Searching Siets storage using HTTP API and returning results in HTML: search.php |
.NET |
Sample search code in ASP .NET search.asp api-ws.wsdl WDSL Description of Services (api-ws.wdsl in XML format): Summary of api-ws.wdsl services Library for Visual C++ .NET 7, that demonstrates how to use web service API (through api-ws.cgi gateway C module): sample-net.zip |
JAVA |
Sample search using Java applet (main class) SietsJApi.java JAVA message subclass - SietsMess.java JAVA protocol subclass - SietsExch.java JAVA XML parser subclass - SietsXMLParser .java Note: for the Java Applet to work successfully with SIETS server, applet must be located on the same host where SIETS server is running. |
PERL |
Importing text files using HTTP API: import.pl |
DELPHI |
Using Siets HTTP API for importing and searching in a Delphi 6 application: delphi_sample .zip |
Welcome to create new Siets REST API "wrapping" libraries or a sample code in other high level programming languages.
New client API libraries and sample code, submitted by authors as free to use software source code for Siets API client applications, I will promptly republish in this section of the web site. I will also retain copyright, references and license notices for contributing authors.
I would kindly encourage contributors to license new submissions for Siets API client software using MIT, BSD, Apache or other permissive open source licences.
Thanks!