<commit_before># Xapiand


## A RESTful Search Engine

Xapiand aims to be: A Highly Available Distributed RESTful Storage and Search Engine built for the Cloud and with Data Locality in mind.

* HTTP RESTful API:
	* Document oriented.
	* No need for upfront schema definition.

* Search Engine:
	* Built on top of [Xapian](http://xapian.org/) indexes.

* Storage Engine:
	* Each index also offers storage of files: à la Facebook's Haystack <sup>[1](#footnote-1)</sup>.

* Multi Tenant with Multi Types:
	* Support for more than one index.
	* Support for different types, one per index.
	* Index level configuration:
		* Schema.

* Efficient and Scalable architecture:
	* (Near) Real Time Search.
	* Event driven asynchronous architecture using [libev](http://software.schmorp.de/pkg/libev.html).
	* Written in C++14.

* Geospatial support:
    * Uses The Hierarchical Triangular Mesh for indexing.
    * Accepts multiple Coordinate Reference Systems, including WGS84.
    * Implements EWKT.

* Support for query Aggregations.

* Liberal Open Source license: MIT license (Xapian itself is GPL).


## Getting Started

This guide will take you through the process of installing Xapiand and
familiarize you with the concepts that will allow you to use the storage and
search indexes. **DON'T PANIC**, it will take just a few minutes.


### Installation

#### Requirements

Xapiand is written in C++14, it makes use of libev (which is included in the
codebase). The only external dependencies for building it are:

* Clang or GCC
* pkg-config
* CMake
* libpthread (internally used by the Standard C++ thread library)
* xapian-core v1.4+ (With patches by Kronuz applied, see https://github.com/Kronuz/xapian)
* Optionally, Google's V8 Javascript engine library (tested with v5.1)


#### Building from Source (GitHub)

1. Download and untar the Xapiand official distribution or clone repository
   from GitHub.

2. Prepare build using:

	```sh
	mkdir build<commit_msg>README: Added Homebrew installation information<commit_after># Xapiand


## A RESTful Search Engine

Xapiand aims to be: A Highly Available Distributed RESTful Storage and Search Engine built for the Cloud and with Data Locality in mind.

* HTTP RESTful API:
	* Document oriented.
	* No need for upfront schema definition.

* Search Engine:
	* Built on top of [Xapian](http://xapian.org/) indexes.

* Storage Engine:
	* Each index also offers storage of files: à la Facebook's Haystack <sup>[1](#footnote-1)</sup>.

* Multi Tenant with Multi Types:
	* Support for more than one index.
	* Support for different types, one per index.
	* Index level configuration:
		* Schema.

* Efficient and Scalable architecture:
	* (Near) Real Time Search.
	* Event driven asynchronous architecture using [libev](http://software.schmorp.de/pkg/libev.html).
	* Written in C++14.

* Geospatial support:
    * Uses The Hierarchical Triangular Mesh for indexing.
    * Accepts multiple Coordinate Reference Systems, including WGS84.
    * Implements EWKT.

* Support for query Aggregations.

* Liberal Open Source license: MIT license (Xapian itself is GPL).


## Getting Started

This guide will take you through the process of installing Xapiand and
familiarize you with the concepts that will allow you to use the storage and
search indexes. **DON'T PANIC**, it will take just a few minutes.


### Installation

#### Requirements

Xapiand is written in C++14, it makes use of libev (which is included in the
codebase). The only external dependencies for building it are:

* Clang or GCC
* pkg-config
* CMake
* libpthread (internally used by the Standard C++ thread library)
* xapian-core v1.4+ (With patches by Kronuz applied, see https://github.com/Kronuz/xapian)
* Optionally, Google's V8 Javascript engine library (tested with v5.1)


#### Homebrew

Xapiand contains a formula for Homebrew (a package manager for OS X). It can
be installed by using the following command:

brew install --HEAD https://github.com/Kronuz/Xapiand/raw/master/contrib/homebrew/xapiand.rb


#### Building from Source (GitHub)

1. Download and untar the Xapiand official distribution or clone repository
   from GitHub.

2. Prepare build using:

	```sh
	mkdir build
{'fraction_non_alphanumeric': 0.08188111721174504, 'fraction_numerical': 0.0071616137502984005, 'mean_word_length': 4.134803921568627, 'pattern_counts': {'":': 0, '<': 7, '<?xml version=': 0, '>': 7, 'https://': 3, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 4, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'dir': 'git-commits-cleaned', 'id': '4381495', 'n_tokens_mistral': 1285, 'n_tokens_neox': 1200, 'n_words': 537}