示例#1
0
        /// <summary>
        /// Get a Hit model from a kusto row.
        /// </summary>
        /// <param name="row">Kusto data row.</param>
        /// <param name="query">QueryData containing query information.</param>
        /// <param name="highlighter">Lucene Highligher.</param>
        /// <returns>Hit model.</returns>
        private static Hit ReadHit(DataRow row, QueryData query, LuceneHighlighter highlighter)
        {
            Ensure.IsNotNull(row, nameof(row));

            var hit     = HitsFactory.Create(Random.Next().ToString(), query.IndexName);
            var columns = row.Table.Columns;

            for (int columnIndex = 0; columnIndex < row.ItemArray.Length; columnIndex++)
            {
                var columnName  = columns[columnIndex].ColumnName;
                var columnValue = GetTypedValueFromColumn(columns[columnIndex], row[columnName]);
                hit.AddSource(columnName, columnValue);
                var highlightValue = highlighter.GetHighlightedValue(columnName, columnValue);
                if (!string.IsNullOrEmpty(highlightValue))
                {
                    hit.AddColumnHighlight(columnName, new List <string> {
                        highlightValue
                    });
                }
            }

            CreateSort(hit, row, query);
            CreateField(hit, row, query);

            return(hit);
        }
示例#2
0
        /// <summary>
        /// Read Hits from KustoResponseDataSet response.
        /// </summary>
        /// <param name="kustoResponseDataSet">KustoResponseDataSet - Kusto parsed response.</param>
        /// <param name="query">QueryData containing query information.</param>
        /// <returns>IEnumerable.<Hit> - collection of hits.</returns>
        public IEnumerable <Hit> ReadHits(KustoResponseDataSet kustoResponseDataSet, QueryData query)
        {
            Ensure.IsNotNull(kustoResponseDataSet, nameof(kustoResponseDataSet));

            if (kustoResponseDataSet[HitsTableName] != null)
            {
                using var highlighter = new LuceneHighlighter(query, Logger);
                return(HitsMapper.MapRowsToHits(kustoResponseDataSet[HitsTableName].TableData.Rows, query, highlighter));
            }

            return(Enumerable.Empty <Hit>());
        }
示例#3
0
 private static IEnumerable <Hit> MapAndAnalyzeRows(DataRowCollection kustoResponseDataTable, QueryData query, LuceneHighlighter highlighter)
 => kustoResponseDataTable.OfType <DataRow>().Select(row => ReadHit(row, query, highlighter));
示例#4
0
 /// <summary>
 /// Parses a kusto datatable to hits.
 /// </summary>
 /// <param name="kustoResponseDataTable">Kusto data rows.</param>
 /// <param name="query">QueryData containing query information.</param>
 /// <param name="highlighter">Lucene highlighter.</param>
 /// <returns>Hits IEnumerable.</returns>
 internal static IEnumerable <Hit> MapRowsToHits(DataRowCollection kustoResponseDataTable, QueryData query, LuceneHighlighter highlighter)
 {
     return(MapAndAnalyzeRows(kustoResponseDataTable, query, highlighter));
 }