nHibernate.Search con nHibernate v2

Tengo problemas para obtener nHibernate. Busque para crear un índice.

Si uso 1.2.1.4 de nHibernate.dll y nHibernate.Search.dll, el índice se crea correctamente y puedo inspeccionarlo con Luke (una utilidad de Lucene). Se crea un archivo de segmentos, así como un archivo de Fragmentos, etc.

Sin embargo, cuando uso la versión 2 de nHibernate.dll y nHibernate.Search.dll, el índice no se crea correctamente. Solo se crea un archivo de 1k segmentos en el directorio Index y Luke no puede inspeccionarlo.

El código que utilicé en v1 fue el siguiente:

_configuration = new Configuration();
_configuration.Configure();
_configuration.AddAssembly(typeof (Contact).Assembly);
_sessionFactory = _configuration.BuildSessionFactory();
SearchFactory.Initialize(_configuration, _sessionFactory);

y tengo lo siguiente en el archivo de configuración

<property name="hibernate.search.default.directory_provider">NHibernate.Search.Storage.FSDirectoryProvider, NHibernate.Search</property>
<property name="hibernate.search.default.indexBase">~/Index</property>

en la versión 2 no hay SearchFactory. Lo único similar que pude encontrar fue

SearchFactoryImpl.GetSearchFactory(_configuration);

Así que configuré la configuración de la siguiente manera

_configuration = new Configuration();
_configuration.Configure();
_configuration.AddAssembly(typeof (Contact).Assembly);
_sessionFactory = _configuration.BuildSessionFactory();
_configuration.SetProperty("hibernate.search.default.directory_provider",
                                       "NHibernate.Search.Store.FSDirectoryProvider, NHibernate.Search");

_configuration.SetProperty("hibernate.search.default.indexBase", "Index");
_configuration.SetProperty("hibernate.search.analyzer",
                                        "Lucene.Net.Analysis.Standard.StandardAnalyzer, Lucene.Net");


_configuration.SetListener(ListenerType.PostUpdate, new FullTextIndexEventListener());
_configuration.SetListener(ListenerType.PostInsert, new FullTextIndexEventListener());
_configuration.SetListener(ListenerType.PostDelete, new FullTextIndexEventListener());

SearchFactoryImpl.GetSearchFactory(_configuration);

Esto crea los huesos básicos de un índice, pero Luke no lo puede ver, lo que me dice que está corrupto.

También he usado el siguiente código para intentar crear el índice manualmente, pero nuevamente solo crea el archivo de segmentos, nada más

public void CreateIndex<T>(string rootIndexDirectory)
{
    Type type = typeof (T);

    var info = new DirectoryInfo(Path.Combine(rootIndexDirectory, type.Name));

    // Recursively delete the index and files in there
    if (info.Exists) info.Delete(true);

    // Now recreate the index
    FSDirectory dir = FSDirectory.GetDirectory(Path.Combine(rootIndexDirectory, type.Name), true);
    //Ioc.UrlProvider.MapPath(Path.Combine(rootIndexDirectory, type.Name)), true);

    try
    {
        var writer = new IndexWriter(dir, new StandardAnalyzer(), true);
        writer.Close();
    }
    finally
    {
        if (dir != null) 
            dir.Close();
    }

    using (ISession session = _sessionFactory.OpenSession())
    {
        using (IFullTextSession fullTextSession = Search.CreateFullTextSession(session)) 
        {
            foreach (var contact in _contacts)
            {
                //session.Save(contact);
                fullTextSession.Index(contact);
            }
        }
    }
}

Entonces mi pregunta es: ¿tengo que usar v1.1.4 de nHibernate si quiero usar nHibernate.Search? ¿O puedo usar v2? En cuyo caso, ¿qué estoy haciendo mal?

Hay muy poco en la web sobre esto.

¿Nadie?

Respuestas a la pregunta(1)

Su respuesta a la pregunta