Java 我将文本文件存储在mongodb中,我希望对文件内容执行搜索操作。mongodb是否支持文件的内容搜索?

Java 我将文本文件存储在mongodb中,我希望对文件内容执行搜索操作。mongodb是否支持文件的内容搜索?,java,mongodb,full-text-search,Java,Mongodb,Full Text Search,我已经创建了一个Java应用程序,通过它我可以在mongodb中插入一个文件,现在我想对它执行内容搜索 这是我的文件插入代码 import java.io.File; import com.mongodb.DB; import com.mongodb.MongoClient; import com.mongodb.gridfs.GridFS; import com.mongodb.gridfs.GridFSDBFile; import com.mongodb.gridfs.GridFSInput

我已经创建了一个Java应用程序,通过它我可以在mongodb中插入一个文件,现在我想对它执行内容搜索

这是我的文件插入代码

import java.io.File;
import com.mongodb.DB;
import com.mongodb.MongoClient;
import com.mongodb.gridfs.GridFS;
import com.mongodb.gridfs.GridFSDBFile;
import com.mongodb.gridfs.GridFSInputFile;

public class TestFileInsert {
public static void main(String[] args){

    try{
        // To create a connection with mongodb
        MongoClient mongoclient = new MongoClient("localhost",27017);
        DB db = mongoclient.getDB( "temp" );
        System.out.println("Connect to database successfully");

        // To insert a file into mongo db using grid fs
        String newFileName = "TssMessage";
        File newfile = new File("/home/n.dat");
        GridFS gfsPhoto = new GridFS(db, "Test");
        GridFSInputFile gfsFile = gfsPhoto.createFile(newfile);
        gfsFile.setFilename(newFileName);
        gfsFile.save();

        System.out.println("Text File Inserted Successfully");

        // to get a file already in database
        String getFileName = "TssMessage";
        GridFS gfsPhoto1 = new GridFS(db, "Test");
        GridFSDBFile imageForOutput = gfsPhoto1.findOne(getFileName);
        System.out.println(imageForOutput);
    }
    catch(Exception e){
        System.err.println( e.getClass().getName() + ": " + e.getMessage() );
    }
}
}

如何在此数据库中执行内容搜索?

您的文件似乎是图像。图像的内容分析是一个非常困难的问题。我的意思是非常非常努力。在角落应用方面有一些进展文本识别,生物特征人脸识别。。。但是,通用图像识别算法可以像人脑一样识别任何图像,这仍然是计算机科学中一个尚未解决的问题,在可预见的未来可能仍然如此。MongoDB并没有试图为这个领域提供解决方案

但即使对于一个简单得多的例子,比如文本文件搜索,MongoDBs GridFS也不是最好的工具

如果文件是基于文本的,则可以尝试在fs.chunks集合上创建文本索引,但在此集合中,每个文件都存储为多个单独的文档,默认情况下,每个文档都包含255KB的数据。当您正在搜索的信息恰好跨越块边界时,这对您没有多大帮助


但是,您可以通过存储在文件中的元数据来查询文件。根据需要执行的操作,您可以在存储文件之前从文件中提取相关搜索词,并将这些搜索词存储在元数据中。

内容搜索。在照片上。或dat文件。那么MongoDB应该如何解析该文件呢?您可能需要保存一些,并在要查询的元数据字段上创建一个文本索引。