我尝试将用户存储在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;
}