public void ClearRepository()
 {
     parsers.Clear();
     wordSplitter = null;
     resultsReorderer = null;
     queryWeightsSupplier = null;
     queryRewriter = null;
     indexFilterManager = null;
 }
        public void FindAndRegisterValidExtensionPoints_RemovesInvalidCustomQueryRewriterConfiguration()
        {
            CreateExtensionPointsConfiguration(addInvalidQueryRewriterConfiguration: true);
            ExtensionPointsConfigurationAnalyzer.FindAndRegisterValidExtensionPoints(extensionPointsConfiguration, logger);

            IQueryRewriter queryRewriter = ExtensionPointsRepository.Instance.GetQueryRewriterImplementation();

            Assert.IsNotNull(queryRewriter, "Default query rewriter should be used!");
            Assert.AreEqual(queryRewriter.GetType().FullName, "Sando.Indexer.Searching.DefaultQueryRewriter", "Invalid query rewriter returned!");

            string logFileContent = File.ReadAllText(logFilePath);

            Assert.IsTrue(logFileContent.Contains("Invalid query rewriter configuration found - it will be omitted during registration process."), "Log file should contain information about removed invalid query rewriter configuration!");
        }
        public void FindAndRegisterValidExtensionPoints_RegistersUsableCustomQueryRewriter()
        {
            CreateExtensionPointsConfiguration(addValidQueryRewriterConfiguration: true);
            ExtensionPointsConfigurationAnalyzer.FindAndRegisterValidExtensionPoints(extensionPointsConfiguration, logger);

            IQueryRewriter queryRewriter = ExtensionPointsRepository.Instance.GetQueryRewriterImplementation();

            Assert.IsNotNull(queryRewriter, "Query rewriter should be registered!");
            Assert.AreEqual(queryRewriter.GetType().FullName, "Sando.TestExtensionPoints.TestQueryRewriter", "Invalid query rewriter returned!");

            string query = null;

            Assert.DoesNotThrow(() => query = queryRewriter.RewriteQuery("Two Keywords"));
            Assert.IsFalse(String.IsNullOrWhiteSpace(query), "Invalid results from RewriteQuery method!");
            Assert.AreEqual(query, "two keywords", "Query is invalid!");
        }
예제 #4
0
        private static void FindAndRegisterValidQueryRewriterExtensionPoints(ExtensionPointsConfiguration extensionPointsConfiguration, ILog logger)
        {
            logger.Info("Reading query rewriter extension point configuration started");
            BaseExtensionPointConfiguration queryRewriterConfiguration = extensionPointsConfiguration.QueryRewriterConfiguration;

            if (queryRewriterConfiguration != null)
            {
                try
                {
                    logger.Info(String.Format("Query rewriter found: {0}, from assembly: {1}", queryRewriterConfiguration.FullClassName, queryRewriterConfiguration.LibraryFileRelativePath));
                    IQueryRewriter queryRewriter = CreateInstance <IQueryRewriter>(extensionPointsConfiguration.PluginDirectoryPath, queryRewriterConfiguration.LibraryFileRelativePath, queryRewriterConfiguration.FullClassName);
                    ExtensionPointsRepository.Instance.RegisterQueryRewriterImplementation(queryRewriter);
                    logger.Info(String.Format("Query rewriter {0} successfully registered.", queryRewriterConfiguration.FullClassName));
                }
                catch (Exception ex)
                {
                    logger.Error(String.Format("Query rewriter {0} cannot be registered: {1}", queryRewriterConfiguration.FullClassName, ex.Message));
                }
            }
            logger.Info("Reading query rewriter extension point configuration finished");
        }
        public void RegisterQueryRewriterImplementation(IQueryRewriter queryRewriter)
        {
            Contract.Requires(queryRewriter != null, "ExtensionPointsManager:RegisterQueryRewriterImplementation - queryRewriter cannot be null!");

            this.queryRewriter = queryRewriter;
        }
        public void RegisterQueryRewriterImplementation(IQueryRewriter queryRewriter)
        {
            Contract.Requires(queryRewriter != null, "ExtensionPointsManager:RegisterQueryRewriterImplementation - queryRewriter cannot be null!");

            this.queryRewriter = queryRewriter;
        }