#c# #solr #solrnet
#c# #solr #solrnet
Вопрос:
Я использую solrnet для индексации данных, как показано ниже :
var solrFacility = new SolrNetFacility("http://mysolr:8983/solr/testcollection");
var container = new WindsorContainer();
container.AddFacility("solr", solrFacility);
var solr = container.Resolve<ISolrOperations<Dictionary<string, object>>>();
solr.Add(new Dictionary<string, object> {
{"id", "http://google.com/link1"},
{"title", "test.pdf"},
{"content", "abcdefghijk"},
{"author", "Ziv Hsu"},
{"editor", "Ziv Hsu"},
});
solr.Commit();
Это работа;
но если у меня есть список объектов, который нужно индексировать, не работает, он получит код 400, как показано ниже:
public class LSchemaField
{
public List<SchemaField> SchemaFieldList = new List<SchemaField>();
}
public class SchemaField
{
public virtual string id { get; set; }
.....
}
LSchemaField SchemaFieldList = new LSchemaField();
SchemaField SchemaFields = new SchemaField();
SchemaFields.id = ....;
SchemaFieldList.SchemaFieldList.Add(SchemaFields);
SchemaField SchemaFields2 = new SchemaField();
SchemaFields2.id =....;
SchemaFieldList.SchemaFieldList.Add(SchemaFields2);
var solrFacility = new SolrNetFacility("http://mysolr:8983/solr/testcollection");
var container = new WindsorContainer();
container.AddFacility("solr", solrFacility);
var solr = ObjectFactory.GetInstance<ISolrOperations<LSchemaField>>();enter code here
solr.Add(SchemaFieldList );
solr.Commit();
Может ли он добавить список объектов?
Ответ №1:
В классе SchemaField вам необходимо установить атрибут SchemaField для каждого свойства, которое вы хотите добавить в solr. это сопоставит свойства с файлами solr. https://github.com/mausch/SolrNet/blob/master/Documentation/Mapping.md
Комментарии:
1. Привет, Пракаш Бхатт, но мой solr использует schema.xml ей же надо сопоставить Schemafield?