Параметры поиска в функции Elasticsearch percolate

Мой вопрос заключается в том, как я могу использовать параметры поиска, такие как multimatch, slop и fuzziness, в перколятной функции с использованием NEST (C#)?

Я хочу реализовать функцию percolate, которая возвращает точно противоположный результат следующей функции поиска:

public List<string> search(string query){
.......
.......
var searchResponse = client.Search<Document>(s => s 
                .AllTypes()
                   .From(0)
                   .Take(10)
                .Query(q => q               // define query
                    .MultiMatch(mp => mp            // of type MultiMatch
                    .Query(input.Trim())
                    .Fields(f => f          // define fields to search against
                    .Fields(f3 => f3.doc_text))
                    .Slop(2)
                    .Operator(Operator.And)
                    .Fuzziness(Fuzziness.Auto))));
}

Ниже приведена функция percolate, которую я сейчас использую, но не знаю, как включить опции multimatch, slop и fuzziness. Я не мог найти подробности об этом в его документации.

var searchResponseDoc = client.Search<PercolatedQuery>(s => s
               .Query(q => q
               .Percolate(f => f
               .Field(p => p.Query)
               .DocumentType<Document>() //I have a class called Document
               .Document(myDocument))) // myDocument is an object of type Document

Благодарю.

1 ответ

Во первых вы делаете multi_match запрос, который имеет параметры, которые вам требуются. В последнем вы делаете percolator запрос.

Если вы хотите сделать оба, вы можете использовать двоичные и побитовые операторы, например

.Query(q => 
    !q.MultiMatch(mp => mp
        .Query(input.Trim())
        .Fields(f => f.Fields(f3 => f3.doc_text))
        .Slop(2)
        .Operator(Operator.And)
        .Fuzziness(Fuzziness.Auto)
    )
    && q.Percolate(f => f
           .Field(p => p.Query)
           .DocumentType<Document>()
           .Document(myDocument)
    )
)

Не использование && создать bool запрос с двумя запросами как must статьи. Одинарный ! Оператор отменяет запрос, помещая запрос в bool и поместив запрос в must_not пункт.

Подробнее см. https://www.elastic.co/guide/en/elasticsearch/client/net-api/current/writing-queries.html

а также

https://www.elastic.co/guide/en/elasticsearch/client/net-api/current/bool-queries.html

Другие вопросы по тегам