使用模糊 NEST 进行多匹配查询 - ElasticSearch

Posted

技术标签:

【中文标题】使用模糊 NEST 进行多匹配查询 - ElasticSearch【英文标题】:Multimatch query with Fuzzy NEST - ElasticSearch 【发布时间】:2020-07-14 11:12:10 【问题描述】:

我编写了以下查询来检查一个值的多个字段,它的工作原理:

    var searchResponse = client.Search<Document>(s => s
        .Query(q => q
        .MultiMatch(a => a
        .Fields(f => f
        .Field(p => p.Attachment.Content)
        .Field(p => p.FileName))
        .Query(queryValue))));

我会得到相同的结果(在 Attachment.Content 和 FileName 字段中搜索 queryValue),但使用模糊机制(例如,如果 queryValue 是“esting”,我也会得到文件名“testing”的结果)。

非常感谢! C# netCore 3.1

【问题讨论】:

【参考方案1】:

在 Elasticsearch 中使用字符进行搜索。

您可以对结果使用以下查询:(注意:必须阅读 cmets)

//finds all strings starting with queryValue
//string queryValue = queryValue + "*";

//finds all strings containing queryValue
string queryValue = "*" + queryValue + "*";

//finds all strings ending with queryValue
//string queryValue = "*" + queryValue;
        
var searchResponse = client.Search<Document>(s => s
                .Query(q => q
                .QueryString(qs => qs
                .Query(queryValue)
                .Fields(f => f
                    .Field(Attachment.Content)//first field
                    .Field(FileName)//second field
                ))));

【讨论】:

以上是关于使用模糊 NEST 进行多匹配查询 - ElasticSearch的主要内容,如果未能解决你的问题,请参考以下文章

如何在excel里面进行一对多的模糊匹配

NEST (ElasticSearch) 将 Highlights 匹配到文档

django全文检索

oracle中如何使用like来进行模糊匹配

使用关键字like进行模糊查询

python模糊匹配库能否定制匹配关系