<commit_before>## Geode Geo Spatial Example

This project demonstrates the ability to add third party indexing on top of Apache Geode.  Third party indexing extends
the capabilities of Geode to quickly retrieve data that can't be looked up through standard key-value techniques or
through Geode's Object Query Language (OQL).

The indexing technique that is used in this project is a Quad Tree.  A Quad Tree is a tree data structure which has four
children - quad means four.  How this index applies to geo spatial, when divide a 2 dimensional space in four equal
partitions.  Each node in the quad tree is then responsible for holding the data that is contained in the individual
Quad.

Basic like this:

```
 0 | 1
 --+--
 2 | 3
 ```

One of the design choices the developer has is how the data maintained in the index.   The developer can push down data
down to the smallest quad defined by the tree or they can rebalanced as data is inserted.

Here is another image that shows how a quad tree can sub divide a map:

 ![Example of a mecator map](/images/ExampleQuadTree.png)

An item to note in the above map that the quads do not have to be square they just need to be uniform.

From a performance perspective a Quad Tree is a O(log n) data structure like all other Tree data structures.

### Some Technical Information

In this example we will be using some features of Geode:

1. **PartitionListener** – The partition listener is make sure the index is HA.   When there is a failure detected the
PartitionListener will create the index on the primary node(s).<commit_msg>Updating readme with sample query image.<commit_after>## Geode Geo Spatial Example

This project demonstrates the ability to add third party indexing on top of Apache Geode.  Third party indexing extends
the capabilities of Geode to quickly retrieve data that can't be looked up through standard key-value techniques or
through Geode's Object Query Language (OQL).

The indexing technique that is used in this project is a Quad Tree.  A Quad Tree is a tree data structure which has four
children - quad means four.  How this index applies to geo spatial, when divide a 2 dimensional space in four equal
partitions.  Each node in the quad tree is then responsible for holding the data that is contained in the individual
Quad.

Basic conceptual view looks like this:

```
 0 | 1
 --+--
 2 | 3
 ```

One of the design choices the developer has is how the data maintained in the index.   The developer can push down data
down to the smallest quad defined by the tree or they can rebalanced as data is inserted.

Here is another image that shows how a quad tree can sub divide a map:

 ![Example of a mecator map](/images/ExampleQuadTree.png)

An item to note in the above map that the quads do not have to be square they just need to be uniform.

From a performance perspective a Quad Tree is a O(log n) data structure like all other Tree data structures.

### Some Technical Information

In this example we will be using some features of Geode:

1. **PartitionListener** – The partition listener is make sure the index is HA.   When there is a failure detected the
PartitionListener will create the index on the primary node(s).
{'fraction_non_alphanumeric': 0.03840149859506713, 'fraction_numerical': 0.003746487667811427, 'mean_word_length': 3.9751552795031055, 'pattern_counts': {'":': 0, '<': 3, '<?xml version=': 0, '>': 3, 'https://': 0, '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': '1581639', 'n_tokens_mistral': 808, 'n_tokens_neox': 768, 'n_words': 535}