Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

https://github.com/indoqa/solr-spatial-clustering

A Distance-based Solr spatial clustering plugin
https://github.com/indoqa/solr-spatial-clustering

distance indoqa-library java solr spatial-clusters

Last synced: 4 days ago
JSON representation

A Distance-based Solr spatial clustering plugin

Awesome Lists containing this project

README

        

# Indoqa Solr Spatial Clustering

This project offers a distance-based spatial clustering search component for Apache Solr.
It addresses the problem of reducing the amount of displayed markers on a map, described as [Spatial Clustering](https://wiki.apache.org/solr/SpatialClustering),
using a [distance-based](https://developers.google.com/maps/articles/toomanymarkers#distancebasedclustering) clustering algorithm based on [GVM](http://www.tomgibara.com/clustering/fast-spatial/).

The search component aggregates all possible search results to a maximum amount of pins and adds this information to the standard search result representation. Like faceting, it can be used to query for a paged result slice (eg. for a result list) and a geographic overview of ALL search result items (spatial clusters) at once.

![Spatial Clustering](https://raw.githubusercontent.com/Indoqa/solr-spatial-clustering/master/spatial_clustering.png)

## Installation

Download the plugin jar from http://repo1.maven.org/maven2/com/indoqa/solr/spatial-clustering/7.5.0/spatial-clustering-7.5.0-jar-with-dependencies.jar and copy it into the `/lib` directory of your solr core.

## Configuration

### schema.xml

To enable spatial clustering, store the geo information (longitude and latitude) in your solr document:

```xml

```

Note: For legacy support of old Solr 4 `SortableDoubleField`, see branch `legacy/solr-4.3`

### solrconfig.xml

Define the search component and map field names for id, longitude and latitude, as well as the maximum allowed number of clusters:

```xml

id
longitude
latitude

1000000

```

After that, add the spatial component to your query component chain:

```xml


spatial-clustering

```

## Usage

### Query Parameters

* `spatial-clustering=true` -> Enables spatial clustering
* `spatial-clustering.size=20` -> Optionally sets the maximum number of clusters (=pins)
* `spatial-clustering.min-result-count=100` -> Optionally sets the minimum number of documents required to do clustering

### Result

Similar to facets, the computed clusters are added to the search result after the requested documents. There are two types of
result pins:

* `single`: Represents a single document, including the id of the referenced document.
* `cluster`: Represents an aggregated pin covering more than one document, including the cluster size.

```xml


single
1
16.345518
48.285202
document-2313


cluster
3
16.2461115932
48.20259082573333

...
...

```

## Build

### Requirements

* Apache Solr 7.5.0+
* Java 8+

### Build

* Download the latest release
* run `maven clean install`