Question: ### Requirements

[Word frequency algorithm for natural language processing](https://stackoverflow.com/questions/90580/word-frequency-algorithm-for-natural-language-processing)

### Using Solr

While the answer for that question is excellent, I was wondering if I could make use of all the time I spent getting to know SOLR for my NLP.

I thought of SOLR because:

1. It's got a bunch of tokenizers and performs a lot of NLP.
2. It's pretty use to use out of the box.
3. It's restful distributed app, so it's easy to hook up
4. I've spent some time with it, so using could save me time.

### Can I use Solr?

Although the above reasons are good, I don't know SOLR THAT well, so I need to know if it would be appropriate for my requirements.

### Ideal Usage

Ideally, I'd like to configure SOLR, and then be able to send SOLR some text, and retrieve the indexed tonkenized content.

### Context

I'm working on a small component of a bigger recommendation engine.

Answer: 
You can actually configure Solr to use NLP algorithms both when indexing documents and at search time.
The first phase (indexing time) can be done using/writing Solr UpdateRequestProcessor plugins for analyzing fields texts while the second phase can be implemented writing a custom QParserPlugin which analyzes the query hit by the user.
I've presented an approach for implementing natural language search in Solr at Lucene Eurocon 2011 which takes advantage of Apache UIMA for running (open source) NLP algorithms.
You can take a look at the [slides](http://www.slideshare.net/teofili/natural-language-search-in-solr) and at the [video](http://www.lucidimagination.com/devzone/events/conferences/ApacheLuceneEurocon2011/natural-language-search-solr) of the talk.
Hope this helps.
Tommaso
In this Google code project 

<http://code.google.com/p/relevance-based-on-parse-trees>

you can use the linguistic-based request handler
in the package opennlp.tools.similarity.apps.solr
public class SyntGenRequestHandler extends SearchHandler

where the search results obtained by SearchHandler
are re-ranked based on similarity of parse trees.