首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >MongoDB .NET驱动程序和文本搜索

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

Stack Overflow用户
提问于 2016-12-02 00:03:23
回答 2查看 4K关注 0票数 3

我使用这个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();

如何使用此方法利用文本搜索?

EN

回答 2

Stack Overflow用户

发布于 2019-03-22 07:23:31

在寻找解决方案时,我找到了FilterDefinition.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();

希望这对某些人有帮助:)

票数 9
EN

Stack Overflow用户

发布于 2016-12-02 00:32:41

这样如何:

IMongoQueryable<MyTypeSerializable> queryable = aCollection
.AsQueryable()
.Where(e=> e.Field.Contains("term"));
票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/40915209

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档