Build a Perfect Search

OpenSearchServer Search Portal helps your building state of the art search experience.
You manage the index, the records and the web templates. We take care of hosting your search service.


Fork me on GitHub

Integrated with GitHub

  1. Start by forking the default template
  2. Sign In using your GitHub account
  3. Generate your Search Portal

Multilingual full-text faceted search Snippet & highlighting BM25 scoring Distributed

Search Portal example

Advanced customisation

Everything can be customized: HTML, index schema, language, search query


Indexing

Define your index

{
  "fields": {
    "$id$": {
      "type": "INTEGER",
      "stored": true
    },
    "title": {
      "type": "TEXT",
      "fulltext": "ENGLISH",
      "stored": true
    },
    "date": {
      "type": "LONG",
      "sort": true
    },
    "tags": {
      "type": "TEXT",
      "fulltext": "ENGLISH",
      "facet": true,
      "stored": true
    },
    "content": {
      "type": "TEXT",
      "fulltext": "ENGLISH",
      "stored": true
    },
    "link": {
      "type": "TEXT",
      "stored": true
    },
    "full": {
      "type": "TEXT",
      "fulltext": "ASCII",
      "copy_from": [
        "title",
        "content",
        "tags"
      ]
    }
  }
}

Search Queries

Define the queries

{
  "queries": {
    "main": {
      "returned": [
        "$id$",
        "title",
        "date",
        "tags",
        "link"
      ],
      "snippets": {
        "content": {
          "field": "content",
          "pre_tag": "<strong>",
          "post_tag": "</strong>",
          "multivalued_separator": ". ",
          "ellipsis": "… ",
          "max_passages": 5,
          "max_length": 200,
          "break_iterator": {
            "type": "sentence",
            "language": "en-US"
          }
        }
      },
      "facets": {
        "tags": {
          "top": 10
        }
      }
    }
  }
}

REST API

Post the records

curl -H "Content-Type: application/json -d @records.json \
-XPOST "https://search.opensearchserver.net/api/.../article"

records.json file example:

[
    {
        "$id$": 1,
        "title": "First article",
        "content": "This is the first article",
        "link":"http://www.example.com/1",
        "tags": ["news"]
    },
	{
        "$id$": 2,
        "title": "Second article",
        "content": "This is the second article",
        "link":"http://www.example.com/2",
        "tags": ["news, economy"]
    }
]

User Interface

Build your own user interface using the HTML template based on Freemarker

<html>
    <body>
        <#include 'includes/search_form.ftl'>
        <#list results.documents as document>
            <div>
                <#if document.fields??>
                    <#assign title=document.fields['title']!>
                    <#assign link=document.fields['link']!>
                    <#assign tags=document.fields['tags']!>
                </#if>
                        <#if document.snippets??>
                    <#assign content=document.snippets['content']>
                </#if>
                <h4><a href="${link!'#'}">${title!'Untitled'}</a></h4>
                <div class="text-success">${(link!)?remove_beginning('http://')}</div>
                <div>${content!'- Empty content -'}</div>
            </div>
        </#list>
    </body>
</html>


Our plans

Search-Portal is free for everyone to use with upgraded plans available

FREE BASIC STANDARD PRO ENTERPRISE
Per month
Taxes may apply

$0

$19

$38

$95

$190

Storage 1 GB 10 GB 20 GB 50 GB 100 GB
Records 10,000 100,000 200,000 500,000 1,000,000
Infrastructure Sandbox Mirror
1 replica
Distributed
2 replicas
Distributed
5 replicas
Distributed
10 replicas
Support Standard support Priority support Priority support Priority support 24/7 support
with four-hour response time
Repositories Public only Public & Private Public & Private Public & Private Public & Private
Virtual Host

Get Started For Free - Sign In with your GitHub account