为什么Solr没有根据惯例进行提取

本文关键字:提取 Solr 有根据 为什么 | 更新日期: 2023-09-27 17:57:45

我目前在Windows 7机器上安装了solr 5.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是我正在上传的文件的路径。

感谢您的帮助!

为什么Solr没有根据惯例进行提取

当你是整个项目的新手时,你真的需要把问题分解成几个部分,看看哪个部分才是真正的问题。端到端测试,然后尝试在中间修复某个问题可能太复杂了。

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

如果真的发生了,那么问题是索尔尔方面会发生什么。如果进入Admin UI,则可以在模式浏览器屏幕上选择特定字段,并查看其中包含的令牌(索引表示)。通过这种方式,您可以检查是否有任何内容进入Solr。如果没有,那么您将担心模式和映射。您还需要进行一个基本查询,检查新文档是否实际显示,无论是否包含这些额外的字段。如果没有,则可能存在多个Solr实例、提交丢失或其他问题。

如果所有这些都很好,那么您将重点放在查询端,看看您是否可能没有要求这些字段或其他遗漏。