Java 我将文本文件存储在mongodb中,我希望对文件内容执行搜索操作。mongodb是否支持文件的内容搜索?
我已经创建了一个Java应用程序,通过它我可以在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
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应该如何解析该文件呢?您可能需要保存一些,并在要查询的元数据字段上创建一个文本索引。