Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 为什么Solr不基于约定进行提取?_C#_.net_Solr_Solrnet_Solr5 - Fatal编程技术网

C# 为什么Solr不基于约定进行提取?

C# 为什么Solr不基于约定进行提取?,c#,.net,solr,solrnet,solr5,C#,.net,Solr,Solrnet,Solr5,我目前在Windows7机器上安装了Solr5.5.0 我正在尝试让一个由一个最近离开我们公司的开发人员创建的项目正常工作。这是在我的膝盖上掉下来的,我以前没有和solr打交道的经验,所以我正跌跌撞撞地想弄明白 我遇到的问题是,当我上传一个文件时,它似乎没有提取如下定义的自定义字段: public class SolrIndexFile { [SolrUniqueKey("id")] public string Id { get; set; } [SolrField("

我目前在Windows7机器上安装了Solr5.5.0

我正在尝试让一个由一个最近离开我们公司的开发人员创建的项目正常工作。这是在我的膝盖上掉下来的,我以前没有和solr打交道的经验,所以我正跌跌撞撞地想弄明白

我遇到的问题是,当我上传一个文件时,它似乎没有提取如下定义的自定义字段:

public class SolrIndexFile
{
    [SolrUniqueKey("id")]
    public string Id { get; set; }

    [SolrField("attr_resourcename")]
    public string Path { get; set; }

    [SolrField("extension_s")]
    public string Extension { get; set; }

    [SolrField("bytes_s")]
    public string Bytes { get; set; } 
}
起初我认为我需要指定schema.xml,但随着我阅读更多内容(solr将其重命名为schema.xml.bak),我发现现在solr5正在使用托管模式

然后我想我需要手动添加这些字段名。但后来我看到了这些约定(我想我在schema.xml文件中看到了),但这些约定似乎仍然适用

现在我回到原点,试图找出如何将这些字段放入摘录中。下面是实际上载文件的代码

using (var fileStream = File.OpenRead(tmp))
{
    _solr.Extract(new ExtractParameters(fileStream, index.Id, index.Path)
    {
        ExtractFormat = ExtractFormat.Text,
        ExtractOnly = false,
        AutoCommit = true
    });
}
tmp是我上传的文件路径


感谢您的帮助

当你对整个项目还不熟悉时,你真的需要把一个问题分成几个部分,看看哪个部分才是真正的问题所在。测试这个端到端,然后尝试在中间修复一些东西可能太复杂了

在您的情况下,最简单的方法可能是转储SolrIndexFile内容,以查看提取是否实际填充了这些值。如果没有,问题不是Solr,而是您的自定义代码

如果是这样,那么问题是Solr方面会发生什么。若您进入管理UI,您可以选择特定字段并查看它包含哪些标记(索引表示)。这样,您可以检查是否有任何内容进入Solr。如果没有,那么您需要担心模式和映射。您还需要执行一个基本查询,并检查新文档是否实际显示,无论是否包含这些额外字段。如果没有,您可能有多个Solr实例、缺少提交或其他问题


如果一切正常,那么您就把注意力集中在查询端,看看您是否可能没有询问这些字段或其他遗漏。

当您对整个项目还不熟悉时,您确实需要将一个问题分成几个部分,以查看哪个部分是真正的问题。测试这个端到端,然后尝试在中间修复一些东西可能太复杂了

在您的情况下,最简单的方法可能是转储SolrIndexFile内容,以查看提取是否实际填充了这些值。如果没有,问题不是Solr,而是您的自定义代码

如果是这样,那么问题是Solr方面会发生什么。若您进入管理UI,您可以选择特定字段并查看它包含哪些标记(索引表示)。这样,您可以检查是否有任何内容进入Solr。如果没有,那么您需要担心模式和映射。您还需要执行一个基本查询,并检查新文档是否实际显示,无论是否包含这些额外字段。如果没有,您可能有多个Solr实例、缺少提交或其他问题


如果一切正常,那么您可以关注查询端,看看是否不需要这些字段或其他遗漏。

solrconfig.xml的内容是什么?应该在那里定义托管模式之类的内容,或者使用5.5的默认值。但是要知道这一点,我们需要看看它。solrconfig.xml的内容是什么?应该在那里定义托管模式之类的内容,或者使用5.5的默认值。但要知道这一点,我们需要看到它。