Как установить количество результатов, возвращаемых после завершения / предложить? - PullRequest
0 голосов
/ 23 декабря 2019

В настоящее время у меня запущена служба Elasticsearch на версии 7.4.0, в то время как мое приложение Windows C Form использует Elasticsearch.Net версии 7.3.1.

Я заметил, что мог установить максимальное количество результатов, возвращаемых извыделите, задав NumberOfFragments, который по умолчанию равен пяти. Однако я не смог получить завершение / предложение о возврате более пяти результатов, когда я установил следующее:

                    var tRes = client.Search<Words>(s => s
                        .SuggestSize(20) // How many suggestions to return in response
                        .Suggest(su => su
                        .Completion("name", cs => cs
                                .SkipDuplicates(true)
                                .Field(f => f.Suggest)
                                .Prefix(tbInput.Text)
                                .Regex("*")
                                .Size(20))
                        )

При выполнении вышеуказанного запроса я получил следующее сообщение об ошибке.

{"The remote server returned an error: (400) Bad Request.. Call: Status code 400 from: POST /docproperty/_search?typed_keys=true&suggest_size=20. ServerError: Type: illegal_argument_exception Reason: \"request [/docproperty/_search] contains unrecognized parameter: [suggest_size] -> did you mean [suggest_field]?\""}

Обновление

Мне удается получить более 5 результатов, добавив следующее:

                    var tRes = client.Search<Words>(s => s
                        .Size(20)
                        .Suggest(su => su
                        .Completion("name", cs => cs
                                .SkipDuplicates(true)
                                .Field(f => f.Suggest)
                                .Prefix(tbInput.Text)
                                .Regex("*")
                                .Size(20))
                                .Term("", t=>t.ShardSize(20).Field(f=>f.Suggest).Text(tbInput.Text))
                        )
                    );

Однако на этот раз я замечаю, что не смог получить завершение для возврата слов (aмного пропущенных), которые могут быть найдены при выполнении MatchPhrase.

1 Ответ

0 голосов
/ 23 декабря 2019

Я думаю, что если вы посмотрите на документацию, я думаю, что она не предназначена для того, чтобы предлагать размер. Я думаю, что это должен быть только размер ... не уверен, поддерживает ли это цепочку.

https://www.elastic.co/guide/en/elasticsearch/reference/current/search-suggesters.html

...