Exemplo n.º 1
0
        public static Sort GetSort(this IndexQuery self, Filter filter, IndexDefinition indexDefinition)
        {
            if (self.SortedFields == null || self.SortedFields.Length <= 0)
            {
                return(null);
            }
            var isSpatialIndexQuery = self is SpatialIndexQuery;

            return(new Sort(self.SortedFields
                            .Select(sortedField =>
            {
                if (sortedField.Field.StartsWith(Constants.RandomFieldName))
                {
                    var parts = sortedField.Field.Split(new[] { ';' }, StringSplitOptions.RemoveEmptyEntries);
                    if (parts.Length < 2)                                                     // truly random
                    {
                        return new RandomSortField(Guid.NewGuid().ToString());
                    }
                    return new RandomSortField(parts[1]);
                }
                if (isSpatialIndexQuery && sortedField.Field == Constants.DistanceFieldName)
                {
                    var dsort = new Lucene.Net.Spatial.Tier.DistanceFieldComparatorSource((Lucene.Net.Spatial.Tier.DistanceFilter)filter);
                    return new SortField(Constants.DistanceFieldName, dsort, sortedField.Descending);
                }
                var sortOptions = GetSortOption(indexDefinition, sortedField.Field);
                if (sortOptions == null || sortOptions == SortOptions.None)
                {
                    return new SortField(sortedField.Field, CultureInfo.InvariantCulture, sortedField.Descending);
                }
                return new SortField(sortedField.Field, (int)sortOptions.Value, sortedField.Descending);
            })
                            .ToArray()));
        }
Exemplo n.º 2
0
        public static Sort GetSort(this IndexQuery self, Filter filter, IndexDefinition indexDefinition)
        {
            if (self.SortedFields == null || self.SortedFields.Length <= 0)
            {
                return(null);
            }
            var isSpatialIndexQuery = self is SpatialIndexQuery;

            return(new Sort(self.SortedFields
                            .Select(sortedField =>
            {
                if (isSpatialIndexQuery && sortedField.Field == Constants.DistanceFieldName)
                {
                    var dsort = new Lucene.Net.Spatial.Tier.DistanceFieldComparatorSource((Lucene.Net.Spatial.Tier.DistanceFilter)filter);
                    return new SortField(Constants.DistanceFieldName, dsort, sortedField.Descending);
                }
                var sortOptions = GetSortOption(indexDefinition, sortedField.Field);
                if (sortOptions == null)
                {
                    return new SortField(sortedField.Field, CultureInfo.InvariantCulture, sortedField.Descending);
                }
                return new SortField(sortedField.Field, (int)sortOptions.Value, sortedField.Descending);
            })
                            .ToArray()));
        }
Exemplo n.º 3
0
		internal override Lucene.Net.Search.Sort GetSort(Lucene.Net.Search.Filter filter, IndexDefinition indexDefinition)
		{
			if (SortByDistance == false)
				return base.GetSort(filter, indexDefinition);

			var dsort = new Lucene.Net.Spatial.Tier.DistanceFieldComparatorSource((Lucene.Net.Spatial.Tier.DistanceFilter)filter);

			return new Lucene.Net.Search.Sort(new Lucene.Net.Search.SortField("foo", dsort, false));
		}
Exemplo n.º 4
0
        public static Sort GetSort(this IndexQuery self, Filter filter, IndexDefinition indexDefinition)
        {
            var spatialIndexQuery = self as SpatialIndexQuery;

            if (spatialIndexQuery != null && spatialIndexQuery.SortByDistance)
            {
                var dsort = new Lucene.Net.Spatial.Tier.DistanceFieldComparatorSource((Lucene.Net.Spatial.Tier.DistanceFilter)filter);

                return(new Sort(new SortField("foo", dsort, false)));
            }

            if (self.SortedFields != null && self.SortedFields.Length > 0)
            {
                return(new Sort(self.SortedFields.Select(x => ToLuceneSortField(indexDefinition, x)).ToArray()));
            }
            return(null);
        }
Exemplo n.º 5
0
		public static Sort GetSort(this IndexQuery self, Filter filter, IndexDefinition indexDefinition)
		{
			if (self.SortedFields == null || self.SortedFields.Length <= 0)
				return null;
			var isSpatialIndexQuery = self is SpatialIndexQuery;
			return new Sort(self.SortedFields
							.Select(sortedField =>
							{
								if (isSpatialIndexQuery && sortedField.Field == Constants.DistanceFieldName)
								{
									var dsort = new Lucene.Net.Spatial.Tier.DistanceFieldComparatorSource((Lucene.Net.Spatial.Tier.DistanceFilter)filter);
									return new SortField(Constants.DistanceFieldName, dsort, sortedField.Descending);
								}
								var sortOptions = GetSortOption(indexDefinition, sortedField.Field);
								if (sortOptions == null || sortOptions == SortOptions.None)
									return new SortField(sortedField.Field, CultureInfo.InvariantCulture, sortedField.Descending);
								return new SortField(sortedField.Field, (int)sortOptions.Value, sortedField.Descending);
							})
							.ToArray());
		}
Exemplo n.º 6
0
		public static Sort GetSort(this IndexQuery self, Filter filter, IndexDefinition indexDefinition)
		{
			if (self.SortedFields == null || self.SortedFields.Length <= 0)
				return null;
			var isSpatialIndexQuery = self is SpatialIndexQuery;
			return new Sort(self.SortedFields
							.Select(sortedField =>
							{
								if(sortedField.Field.StartsWith(Constants.RandomFieldName))
								{
									var parts = sortedField.Field.Split(new[]{';'}, StringSplitOptions.RemoveEmptyEntries);
									if (parts.Length < 2) // truly random
										return new RandomSortField(Guid.NewGuid().ToString());
									return new RandomSortField(parts[1]);
								}
								if (isSpatialIndexQuery && sortedField.Field == Constants.DistanceFieldName)
								{
									var dsort = new Lucene.Net.Spatial.Tier.DistanceFieldComparatorSource((Lucene.Net.Spatial.Tier.DistanceFilter)filter);
									return new SortField(Constants.DistanceFieldName, dsort, sortedField.Descending);
								}
								var sortOptions = GetSortOption(indexDefinition, sortedField.Field);
								if (sortOptions == null || sortOptions == SortOptions.None)
									return new SortField(sortedField.Field, CultureInfo.InvariantCulture, sortedField.Descending);
								return new SortField(sortedField.Field, (int)sortOptions.Value, sortedField.Descending);
							})
							.ToArray());
		}
Exemplo n.º 7
0
        public static Sort GetSort(this IndexQuery self, Filter filter, IndexDefinition indexDefinition)
        {
            var spatialIndexQuery = self as SpatialIndexQuery;
            if(spatialIndexQuery != null && spatialIndexQuery.SortByDistance)
            {
                var dsort = new Lucene.Net.Spatial.Tier.DistanceFieldComparatorSource((Lucene.Net.Spatial.Tier.DistanceFilter)filter);

                return new Sort(new SortField("foo", dsort, false));

            }

            if (self.SortedFields != null && self.SortedFields.Length > 0)
                return new Sort(self.SortedFields.Select(x => ToLuceneSortField(indexDefinition, x)).ToArray());
            return null;
        }
Exemplo n.º 8
0
		internal override Lucene.Net.Search.Sort GetSort(IndexDefinition indexDefinition)
		{
			if (SortByDistance == false)
				return base.GetSort(indexDefinition);

			var dq = new Lucene.Net.Spatial.Tier.DistanceQueryBuilder(
					Latitude, Longitude, Radius,
					SpatialIndex.LatField,
					SpatialIndex.LngField,
					Lucene.Net.Spatial.Tier.Projectors.CartesianTierPlotter.DefaltFieldPrefix,
					true);
			var dsort = new Lucene.Net.Spatial.Tier.DistanceFieldComparatorSource(dq.DistanceFilter);
			return new Lucene.Net.Search.Sort(new Lucene.Net.Search.SortField("foo", dsort, false));
		}