<commit_before>Acora
======

:Author: <NAME>

.. contents:: :local:

What is Acora?
---------------

Acora is 'fgrep' for Python, a fast multi-keyword text search engine.

Based on a set of keywords, it generates a search automaton (DFA) and
runs it over string input, either unicode or bytes.

It is based on the Aho-Corasick algorithm and an NFA-to-DFA powerset
construction.

Acora comes with both a pure Python implementation and a fast binary
module written in Cython. However, note that the current construction
algorithm is not suitable for really large sets of keywords (i.e. more
than a couple of thousand).


Features
---------

* works with unicode strings and byte strings
* about 2-3x as fast as Python's regular expression engine for most input
* finds overlapping matches, i.e. all matches of all keywords
* support for case insensitive search (~10x as fast as 're')
* frees the GIL while searching<commit_msg>link to github sources from readme file<commit_after>Acora
======

:Author: <NAME>

.. contents:: :local:

What is Acora?
---------------

Acora is 'fgrep' for Python, a fast multi-keyword text search engine.

Based on a set of keywords, it generates a search automaton (DFA) and
runs it over string input, either unicode or bytes.

It is based on the Aho-Corasick algorithm and an NFA-to-DFA powerset
construction.

Acora comes with both a pure Python implementation and a fast binary
module written in Cython. However, note that the current construction
algorithm is not suitable for really large sets of keywords (i.e. more
than a couple of thousand).

You can find the `latest source code <https://github.com/scoder/acora>`_ on
github.


Features
---------

* works with unicode strings and byte strings
* about 2-3x as fast as Python's regular expression engine for most input
* finds overlapping matches, i.e. all matches of all keywords
* support for case insensitive search (~10x as fast as 're')
* frees the GIL while searching
{'fraction_non_alphanumeric': 0.08720040795512493, 'fraction_numerical': 0.00407955124936257, 'mean_word_length': 3.762135922330097, 'pattern_counts': {'":': 0, '<': 6, '<?xml version=': 0, '>': 6, 'https://': 1, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'dir': 'git-commits-cleaned', 'id': '3887850', 'n_tokens_mistral': 548, 'n_tokens_neox': 533, 'n_words': 287}