Apache ManifoldCF Plugin for Apache Solr 4.x
Release Notes

This file describes changes to the Apache ManifoldCF Plugin for Apache Solr 4.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", defaulting to "allow_token_".
DenyAttributePrefix - the first part of the 'deny' family of fields, e.g. "deny_token_document" or
	"deny_token_share", defaulting to "deny_token_".
ConnectionPoolSize - the size of the connection pool (default is 50).

$Id$

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

Initial Release
