Search code examples
solrsolrnet

Solrnet & Clustering


Is it possible to get clustering in Solr querying via SolrNet? using built-in algos. like Carrot2 etc.? Can anyone share some sample code or tips to proceed?


Solution

  • No, Solr clustering is not currently implemented in SolrNet. It doesn't seem to be hard to implement though. Here's an outline of what it would take:

    • Model the Solr response for clusters as a class (e.g. ClusteringResult). For example, StatsResult models the response for the StatsComponent.
    • Add a property for ClusteringResult in ISolrQueryResults<T> and SolrQueryResults<T>
    • Implement a ISolrResponseParser<T> to parse the part of Solr XML response with the clustering information and load a ClusteringResult object. See other response parsers for reference.
    • Register the response parser in the built-in container, the Ninject module, the Windsor facility and the StructureMap registry.
    • Model the parameters involved in the query as a class (e.g. ClusteringParameters). This would include a property to mirror carrot.algorithm, another for carrot.url, etc.
    • Add a property for ClusteringParameters in QueryOptions.
    • Serialize this ClusteringParameters to querystring parameters in SolrQueryExecuter.

    And of course, unit tests for everything. Ideally, also an integration test.

    Then send me a pull request ;-)