NEST Match Query Issue - PullRequest
       8

NEST Match Query Issue

0 голосов
/ 13 сентября 2018

В настоящее время я работаю над поиском NEST для базы данных телефонов.Мне очень не повезло с динамической версией вещей с точки зрения ее создания, чтобы пользователь мог отфильтровать определенные термины для поиска во внешнем интерфейсе.

Это потому, что NEST не нравится замена поля"f.something" с переменной.Из-за этого я перешел на статический режим, потому что я уверен, что смогу сделать это с некоторой реализацией объекта.

Однако, теперь, несмотря на то, что я получаю действительные ответы NEST, они всегда пусты, хотя, очевидно, естьрезультат, который будет иметься.Например, «Имя» для поля и «iPhone» для запроса.Что мне не хватает?Заранее спасибо.

PS Закомментированный код раньше проверял "bool" и "should", но аналогично я не получал никаких результатов.

private ISearchResponse<MasterProduct> SearchThis(ElasticClient client, string query, string field, int pageSize, int recordNumber)
        {
            var searchLayout = new SearchRequest<MasterProduct>
            {
                Size = pageSize,
                From = recordNumber,
                Query = new MatchQuery
                {
                    Field = field,
                    Query = query,
                    Fuzziness = Fuzziness.Auto,
                    PrefixLength = 2,
                    Lenient = true,
                    FuzzyRewrite = MultiTermQueryRewrite.TopTermsBlendedFreqs(10)
                }
            };
            var searchResponse = client.Search<MasterProduct>(searchLayout);
            return searchResponse;
            }

            /*var searchResponse = client.Search<MasterProduct>(s => s
                .From(recordNumber)
                .Size(pageSize)
                .Query(q => q
                .Match(a => a
                    .Field(f => f.MasterProductName) 
                    .Query(query)
                    .Fuzziness(Fuzziness.Auto)
                    .PrefixLength(2)
                    .Fuzziness(Fuzziness.Auto)
                    .Lenient()
                    .FuzzyRewrite(MultiTermQueryRewrite.TopTermsBlendedFreqs(10))
                    )

                .Match(b => b
                    .Field(f => f.ManufacturerName)
                    .Query(query)
                    .Fuzziness(Fuzziness.Auto)
                    .PrefixLength(2)
                    .Fuzziness(Fuzziness.Auto)
                    .Lenient()
                    .FuzzyRewrite(MultiTermQueryRewrite.TopTermsBlendedFreqs(10))
                    )

                .Match(c => c
                    .Field(f => f.MasterAttributes)
                    .Query(query)
                    .Fuzziness(Fuzziness.Auto)
                    .PrefixLength(2)
                    .Fuzziness(Fuzziness.Auto)
                    .Lenient()
                    .FuzzyRewrite(MultiTermQueryRewrite.TopTermsBlendedFreqs(10))
                    )
                )
            );
            Console.WriteLine(searchResponse.Hits.Count());

            foreach (var hit in searchResponse.Documents)

            {

                Console.WriteLine(hit.MasterProductId);

            }*/
    }

1 Ответ

0 голосов
/ 12 марта 2019

@ RussCam ответил на вопрос в комментариях выше.Повторим, передавайте только строки в качестве параметров для полей, а не для других типов данных.Верблюд также необходим для того, чтобы это работало.

...