【发布时间】:2019-09-11 10:17:12
【问题描述】:
如何将以下 SQL Query 转换为 Nest Code 以搜索主要包含 2 列 1. CATEGORY 2. COMPANY_NAME 的 Elastic Search 索引?
SELECT * FROM dbo.Table
WHERE
COMPANY_NAME LIKE '%DATALIGENCE%' AND (CATEGORY LIKE 'A%' OR CATEGORY LIKE 'B%')
下面是我的 NEST 代码,它在没有类别条件的情况下可以正常工作:-
prefixText = {"prefixText":"DATALIGENCE","count":25}
QueryContainer query = new MatchQuery
{
//Field = Field<RawData>(p => p.company_name),
Analyzer = "standard",
Boost = 1.1,
Name = "named_query",
Field = "company_name",
//CutoffFrequency = 0.001,
Query = prefixText,
Fuzziness = Fuzziness.Auto,
//Fuzziness = Fuzziness.AutoLength(3, 6),
FuzzyTranspositions = true,
//MinimumShouldMatch = 1,
//FuzzyRewrite = MultiTermQueryRewrite.TopTermsBlendedFreqs(10),
Lenient = true,
//Operator = Operator.Or,
AutoGenerateSynonymsPhraseQuery = false
//MinimumShouldMatch = 50
};
var searchRequest = new SearchRequest("companylistindex")
{
Query = query,
Size = 10,
MinScore = 1,
Sort = new List<ISort>
{
new FieldSort { Field = "_score", Order = Nest.SortOrder.Descending }
}
//Sort(sort => sort.OnField("_score").Descending())
//Sort = SortSpecialField.Score
//Sort = SortSpecialField.Score
};
var searchResults = client.Search<RawData>(searchRequest);
//var jsonResult = JsonConvert.SerializeObject("{\"result\":true\"}");
List<RawData> lstData = new List<RawData>();
lstData = searchResults.Documents.ToList();
【问题讨论】:
标签: c# asp.net elasticsearch nest