gpt4 book ai didi

MongoDB .NET 驱动程序和文本搜索

转载 作者:行者123 更新时间:2023-12-03 23:38:38 25 4
gpt4 key购买 nike

我正在使用这个 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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com