使用lucene.net构建索引2.9.2.2

时间:2011-03-08 12:44:36

标签: lucene.net nhibernate.search

我必须在NHibernate 3.0中使用lucene.net 2.9.2.2。我已经开始编辑这个旧代码了:

public void BuildSearchIndex()
{

    FSDirectory entityDirectory = null;
    IndexWriter writer = null;

    var entityType = typeof(MappedSequence);

    var indexDirectory = new DirectoryInfo(GetIndexDirectory());

    if (indexDirectory.Exists)
    {
    indexDirectory.Delete(true);
    }

    try
    {
    entityDirectory = FSDirectory.GetDirectory(Path.Combine(indexDirectory.FullName, entityType.Name), true);
    writer = new IndexWriter(entityDirectory, new StandardAnalyzer(Lucene.Net.Util.Version.LUCENE_29), true, IndexWriter.MaxFieldLength.UNLIMITED);
    }
    finally
    {
    if (entityDirectory != null)
    {
        entityDirectory.Close();
    }

    if (writer != null)
    {
        writer.Close();
    }
    }

    IFullTextSession fullTextSession = Search.CreateFullTextSession(this.Session);
    // Iterate through Suppliers and add them to Lucene's index
    foreach (MappedSequence instance in Session.CreateCriteria(typeof(MappedSequence)).List<MappedSequence>())
    {
    fullTextSession.Index(instance);
    }
}

private string GetIndexDirectory()
{
    INHSConfigCollection nhsConfigCollection = CfgHelper.LoadConfiguration();
    string property = nhsConfigCollection.DefaultConfiguration.Properties["hibernate.search.default.indexBase"];
    var fi = new FileInfo(property);
    return Path.Combine(AppDomain.CurrentDomain.BaseDirectory, fi.Name);
} 

构建索引。这一行:

FSDirectory.GetDirectory(Path.Combine(indexDirectory.FullName, entityType.Name), true);

仍然使用过时的代码。任何人都可以这么善良并指出必要的改变。感谢。

基督教

PS

enter image description here

1 个答案:

答案 0 :(得分:0)

请尝试使用FSDirectory.Open(路径)。