Senna: An Embeddable Fulltext Search Engine
English | Japanese
Senna is an embeddable fulltext search engine, which you can use in conjunction with various scripting languages and databases. Senna is an inverted index based engine, and combines the best of n-gram indexing and word indexing to achieve fast, precise searches. While senna codebase is rather compact it is scalable enough to handle large amounts of data and queries.
Senna can easily be embbeded into a database, or can be used directly from within programs written in C, ruby, perl, etc.
Whereas a majority of search engines are comprised of a data file (the actual text that is being searched) and an inverted index file, senna uses only an inverted index file and delegates the responsibility to store and manage data to the system that Senna is being embedded into (such as a database). This allows Senna to avoid having to duplicate efforts to manage the actual data.
Senna is also designed such that no locking is required when performing concurrent read/writes. This greatly reduces the impact on the embedding system's performance
Senna uses the best breed of word-based index and n-gram index. This means that Senna's indices are relatively small and has a high precision, while at the same time keeping a high recall on the search results.
By default Senna stores terms into an inverted index file (word-based index) after performing morphological analysis on the sentences. But by combining a fast, partial match search using a dictionary, Senna is also able to match entries that are usually missed by ordinary word-based index searches.
Senna allows incremental updates to an already existing index. This allows users to dynamically add/edit/delete index entries without having to rebuild the entire index
This program is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation.
This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.