Siets.net Search Engine Software Documentation

Siets Developer's Guide

Siets Administration and Configuration Guide

Siets Installation Guide

Siets Tutorial: Website Search

Siets Tutorial: News DB Search

Updates not yet written in the docs:

Siets API software has open source MIT licence

The following software components, published on Siets.net website and in Siets software documentation resources:

  • client side Siets REST API protocol XML messages
  • SIETS API sample code in C/C++ and 4GL programming languages
  • Siets API commands "wrapping" libraries in 4GL programming languages
  • SIETS API client side data loading software

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 API protocol

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
  • Siets XML_reply

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:

Siets API commands

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.

Siets API code samples in programming languages

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
XML
XSLT

Sample search form that works with Siets API: search.html


XSLT stylesheet for default web results:
web_results.xsl


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
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 contribute

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!