我正在使用SolrNet库与来自.net的solr进行交互。我不得不对solarconfig.xml文件进行一些更改,以使solr使用我的schema.xml文件而不是托管模式。最终它全部加载到仪表板区域,我认为事情很好。然后我尝试使用以下内容向索引添加一些文档。
var itemsToAdd = new List<FindDocument>()
{
new FindDocument()
{
Id = "a1",
DocumentType = "Agency",
Email = "test@test.com"
},
new FindDocument()
{
Id = "a2",
DocumentType = "Agency",
Email = "test2@test.com"
},
new FindDocument()
{
Id = "r1",
DocumentType = "Recruiter",
Email = "recruiter@test.com"
}
};
var solr = ServiceLocator.Current.GetInstance<ISolrOperations<FindDocument>>();
solr.AddRange(itemsToAdd);
solr.Commit();
当我进入solr仪表板,选择我的核心并试图查询它显示0文件。我手动尝试通过仪表板的“文档”选项卡添加文档。它返回成功消息但是再次查询返回0文档。这是我在日志中看到的内容。
solrnet添加日志 -
2017-11-07 18:46:59.182 INFO (qtp7980742-42) [ x:TenixFind] o.a.s.u.p.LogUpdateProcessor [TenixFind] webapp=/solr path=/update params={version=2.2} {add=[a1 (1583434085624184832), a2 (1583434085624184833), r1 (1583434085624184834)]} 0 50
2017-11-07 18:46:59.296 INFO (qtp7980742-41) [ x:TenixFind] o.a.s.u.p.LogUpdateProcessor [TenixFind] webapp=/solr path=/update params={version=2.2} {commit=} 0 0
2017-11-07 18:47:38.823 INFO (qtp7980742-42) [ x:TenixFind] o.a.s.u.p.LogUpdateProcessor [TenixFind] webapp=/solr path=/update params={version=2.2} {add=[a1 (1583434127189737472), a2 (1583434127189737473), r1 (1583434127190786048)]} 0 44
2017-11-07 18:47:38.922 INFO (qtp7980742-41) [ x:TenixFind] o.a.s.u.p.LogUpdateProcessor [TenixFind] webapp=/solr path=/update params={version=2.2} {commit=} 0 0
然后手动仪表板添加。
2017-11-07 18:57:21.176 INFO (qtp7980742-46) [ x:TenixFind] o.a.s.u.p.LogUpdateProcessor [TenixFind] webapp=/solr path=/update params={wt=json} {add=[abc123 (1583434737832165376)]} 0 0
我没有收到任何错误,所以我不确定为什么这些文件没有被保存。由于运行位置的限制,我不得不运行旧版本的solr - 5.3.0。
此外,作为一些背景知识,当solr最初设置为使用托管架构时,我能够添加文档。但是它不会使用我的自定义字段类型和动态字段,因为它没有读取schema.xml文件。我尝试使用这些自定义字段/类型修改托管模式文件,虽然它们有效,但我告诉同事,在生产环境中,我必须让solr使用schema.xml文件而不是托管模式由于它是如何运行的。
编辑:
我发现了问题。更新solrconfig.xml文件以使用schema.xml而不是managed-schema文件时,还必须从solrconfig中删除以下内容。
<processor class="solr.AddSchemaFieldsUpdateProcessorFactory">
<str name="defaultFieldType">strings</str>
<lst name="typeMapping">
<str name="valueClass">java.lang.Boolean</str>
<str name="fieldType">booleans</str>
</lst>
<lst name="typeMapping">
<str name="valueClass">java.util.Date</str>
<str name="fieldType">tdates</str>
</lst>
<lst name="typeMapping">
<str name="valueClass">java.lang.Long</str>
<str name="valueClass">java.lang.Integer</str>
<str name="fieldType">tlongs</str>
</lst>
<lst name="typeMapping">
<str name="valueClass">java.lang.Number</str>
<str name="fieldType">tdoubles</str>
</lst>
</processor>
然而,直接紧接着是我意外删除的另一条线。
<processor class="solr.RunUpdateProcessorFactory"/>
一旦我把它放回去就开始保存文件。