将数据存储在lucene中

时间:2015-07-17 06:51:12

标签: c# asp.net lucene.net

我尝试将用户存储在lucene中,但某些用户未存储。 用户喜欢" k-test.com"没有存储。为什么?我从来没有得到任何错误信息或其他东西其他用户喜欢" test"被储存了。我需要对名称或其他内容进行编码吗? 这就是我的所作所为:

private static void ResetIndex(IEnumerable<UserInfo> users)
{
    var CloudAccount = Microsoft.WindowsAzure.Storage.CloudStorageAccount.Parse(Blob.ConnectionString);
    var RamDIR = new RAMDirectory();
    var DIR = new AzureDirectory(CloudAccount, FolderName, RamDIR);

    IndexWriter Writer = null;
    var Analyzer = new StandardAnalyzer(LuceneVersion);

    while (Writer == null)
    {
        try
        {
            Writer = new IndexWriter(DIR, Analyzer, !IndexReader.IndexExists(DIR), IndexWriter.MaxFieldLength.UNLIMITED);
            Writer.DeleteAll();
            Writer.Commit();
        }
        catch (LockObtainFailedException)
        {
            DIR.ClearLock("write.lock");
        }
    }

    foreach (var Pr in users)
    {
        Writer.AddDocument(GetUserInfoDoc(Pr));
    }

    Writer.Optimize();
    Writer.Dispose();
}

private static Document GetUserInfoDoc(UserInfo ui)
{
    var Doc = new Document();

    Doc.Add(new Field("UserName", ui.UserName, Field.Store.YES, Field.Index.ANALYZED, Field.TermVector.YES));
    Doc.Add(new Field("FirstName", ui.FirstName, Field.Store.YES, Field.Index.ANALYZED, Field.TermVector.YES));
    Doc.Add(new Field("LastName", ui.LastName, Field.Store.YES, Field.Index.ANALYZED, Field.TermVector.YES));
    Doc.Add(new Field("UserNr", ui.UserNr.ToString(CultureInfo.InvariantCulture), Field.Store.YES, Field.Index.NO));

    return Doc;
}

0 个答案:

没有答案