我正在使用这个 MongoDB 驱动程序:https://mongodb.github.io/mongo-csharp-driver/
我想使用文本索引进行搜索,它(我认为)是在所有文本字段上创建的,如下所示:
{
"_fts" : "text",
"_ftsx" : 1
}
我正在使用 linq 查询来过滤数据,例如:
MongoClient client = new MongoClient(_mongoConnectionString);
IMongoDatabase mongoDatabase = client.GetDatabase(DatabaseName);
var aCollection = mongoDatabase.GetCollection<MyTypeSerializable>(CollectionName);
IMongoQueryable<MyTypeSerializable> queryable = aCollection.AsQueryable()
.Where(e=> e.Field == 1);
var result = queryable.ToList();
如何使用此方法进行文本搜索?
最佳答案
寻找解决方案我找到了 FilterDefinition<T>.Inject()
扩展方法。
所以我们可以更深入地在 IMongoQueryable<T>
上再创建一个扩展。 :
public static class MongoQueryableFullTextExtensions
{
public static IMongoQueryable<T> WhereText<T>(this IMongoQueryable<T> query, string search)
{
var filter = Builders<T>.Filter.Text(search);
return query.Where(_ => filter.Inject());
}
}
并像这样使用它:
IMongoDatabase database = GetMyDatabase();
var results = database
.GetCollection<Blog>("Blogs")
.AsQueryable()
.WhereText("stackoverflow")
.Take(10)
.ToArray();
希望这对某人有所帮助:)
关于MongoDB .NET 驱动程序和文本搜索,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40915209/