示例#1
0
        private void InvokeSuggestionIndexing(string name, IndexDefinition definition, Index index)
        {
            foreach (var suggestion in definition.Suggestions)
            {
                var field            = suggestion.Key;
                var suggestionOption = suggestion.Value;

                if (suggestionOption.Distance == StringDistanceTypes.None)
                {
                    continue;
                }

                var indexExtensionKey =
                    MonoHttpUtility.UrlEncode(field + "-" + suggestionOption.Distance + "-" +
                                              suggestionOption.Accuracy);

                var suggestionQueryIndexExtension = new SuggestionQueryIndexExtension(
                    index,
                    WorkContext,
                    Path.Combine(Database.Configuration.IndexStoragePath, "Raven-Suggestions", name, indexExtensionKey),
                    SuggestionQueryRunner.GetStringDistance(suggestionOption.Distance),
                    Database.Configuration.RunInMemory,
                    field,
                    suggestionOption.Accuracy);

                Database.IndexStorage.SetIndexExtension(name, indexExtensionKey, suggestionQueryIndexExtension);
            }
        }
示例#2
0
        private void LoadExistingSuggesionsExtentions(string indexName, Index indexImplementation)
        {
            var suggestionsForIndex = Path.Combine(configuration.IndexStoragePath, "Raven-Suggestions", indexName);

            if (!Directory.Exists(suggestionsForIndex))
            {
                return;
            }

            foreach (var directory in Directory.GetDirectories(suggestionsForIndex))
            {
                IndexSearcher searcher;
                using (indexImplementation.GetSearcher(out searcher))
                {
                    var key                 = Path.GetFileName(directory);
                    var decodedKey          = MonoHttpUtility.UrlDecode(key);
                    var lastIndexOfDash     = decodedKey.LastIndexOf('-');
                    var accuracy            = float.Parse(decodedKey.Substring(lastIndexOfDash + 1));
                    var lastIndexOfDistance = decodedKey.LastIndexOf('-', lastIndexOfDash - 1);
                    StringDistanceTypes distanceType;
                    Enum.TryParse(decodedKey.Substring(lastIndexOfDistance + 1, lastIndexOfDash - lastIndexOfDistance - 1),
                                  true, out distanceType);
                    var field     = decodedKey.Substring(0, lastIndexOfDistance);
                    var extension = new SuggestionQueryIndexExtension(
                        Path.Combine(configuration.IndexStoragePath, "Raven-Suggestions", indexName, key), searcher.IndexReader,
                        SuggestionQueryRunner.GetStringDistance(distanceType),
                        field,
                        accuracy);
                    indexImplementation.SetExtension(key, extension);
                }
            }
        }
示例#3
0
        private void InvokeSuggestionIndexing(string name, IndexDefinition definition, Index index)
        {
            foreach (var suggestion in definition.SuggestionsOptions)
            {
                var field = suggestion;

                var indexExtensionKey = MonoHttpUtility.UrlEncode(field);

                var suggestionQueryIndexExtension = new SuggestionQueryIndexExtension(
                    index,
                    WorkContext,
                    Path.Combine(Database.Configuration.IndexStoragePath, "Raven-Suggestions", name, indexExtensionKey),
                    Database.Configuration.RunInMemory,
                    field);

                Database.IndexStorage.SetIndexExtension(name, indexExtensionKey, suggestionQueryIndexExtension);
            }
        }