Apache ManifoldCF Plugin for Apache Solr 3.x
Release Notes

This file describes changes to the Apache ManifoldCF Plugin for Apache Solr 3.x security
package (contrib/mcf) module.

Introduction
------------
This module is intended to be used to restrict queries based on a user's authorization information.
It includes a SearchComponent class org.apache.solr.mcf.ManifoldCFSearchComponent.  It also includes
a Query Parser plugin class org.apache.solr.mcf.ManifoldCFQParserPlugin.  Both components
require the argument "AuthorityServiceBaseURL", which describes the URL needed to reach
the ManifoldCF Authority Service.  Other optional parameters are:

AllowAttributePrefix - the first part of the 'allow' family of fields, e.g. "allow_token_document" or
	"allow_token_share" or "allow_token_parent", defaulting to "allow_token_".
DenyAttributePrefix - the first part of the 'deny' family of fields, e.g. "deny_token_document" or
	"deny_token_share" or "deny_token_parent", defaulting to "deny_token_".
ConnectionPoolSize - the size of the connection pool (default is 50).

$Id$

==================  4.0.0-dev ==============

Initial Release
