2017-10-13 64 views
0

我在c#中使用MongoDB。要在「知識」集合中搜索「問題」,這是我的代碼。使用c#驅動的MongoDB文本搜索2.4.4

var collection = _database.GetCollection<BsonDocument>("knowledge"); 
var filter = Builders<BsonDocument>.Filter.Eq("question", question); 
var results = await collection.Find(filter).ToListAsync(); 

取而代之,我想搜索包含給定單詞的'問題'。我想在MongoDB中簡單地搜索一個模式。

db.stores.find({ $text: { $search: "java \"coffee shop\"" } }) 

我在棧中發現了這個。

collection.Indexes.CreateOne(Builders<searchFileByAuthor>.IndexKeys.Text(x=>x.subject)); 
collection.Find(Builders<searchFileByAuthor>.Filter.Text("coffe")).ToList(); 

Full text search in mongodb in .net

我不熟悉C#中使用的MongoDB雖然。我應該如何修改我的代碼以創建文本索引並搜索模式?如何在MongoDB .NET驅動程序版本2.4.4中執行此操作?

回答

1

要創建搜索模式,您可以使用Regex構建器。在描述字段中匹配「java」或「咖啡店」的示例:

var collection = _database.GetCollection<BsonDocument>("knowledge"); 
var builder = Builders<BsonDocument>.Filter; 
var filter = builder.Regex("description", "(java)") | builder.Regex("description", "(coffee shop)"); 
var result = collection.Find(filter).ToList(); 
+0

它對我很有用。謝謝。但是當我不得不搜索一個大集合時,這會降低性能嗎? (與使用文本索引進行搜索相比) –