IFieldExtractor

IFieldExtractor interface

提供从文档中提取字段的方法。

public interface IFieldExtractor

特性

姓名 描述
Extensions { get; } 获取支持的扩展。

方法

姓名 描述
GetFields(Stream) 从指定文档中提取所有字段。
GetFields(string) 从指定文档中提取所有字段。

评论

了解更多

例子

示例演示如何实现接口IFieldExtractor.

public class LogExtractor : IFieldExtractor
{
    private readonly string[] extensions = new string[] { ".log" };

    public string[] Extensions
    {
        get { return extensions; }
    }

    public DocumentField[] GetFields(string filePath)
    {
        FileInfo fileInfo = new FileInfo(filePath);
        DocumentField[] fields = new DocumentField[]
        {
            new DocumentField("FileName", fileInfo.FullName),
            new DocumentField("CreationDate", fileInfo.CreationTime.ToString(CultureInfo.InvariantCulture)),
            new DocumentField("Content", ExtractContent(filePath)),
        };
        return fields;
    }

    private string ExtractContent(string filePath)
    {
        StringBuilder result = new StringBuilder();
        using (StreamReader streamReader = File.OpenText(filePath))
        {
            string line = streamReader.ReadLine();
            string processedLine = line.Remove(0, 12);
            result.AppendLine(processedLine);
        }
        return result.ToString();
    }
}

该示例演示了如何使用 custorm 提取器进行索引。

string indexFolder = @"c:\MyIndex\"; // 指定索引文件夹的路径
string documentsFolder = @"c:\MyDocuments\"; // 指定包含要搜索的文档的文件夹的路径

Index index = new Index(indexFolder); // 创建或加载索引

index.IndexSettings.CustomExtractors.Add(new LogExtractor()); // 将自定义文本提取器添加到索引设置

index.Add(documentsFolder); // 索引指定文件夹中的文档

也可以看看