Beispiel #1
0
        /// <summary>
        /// Executes this command
        /// </summary>
        /// <param name="connection"></param>
        /// <returns></returns>
        public string Execute(ISolrConnection connection)
        {
            var xml  = new XmlDocument();
            var node = xml.CreateElement("optimize");

            foreach (var p in new[] { new KeyValuePair <bool?, string>(WaitSearcher, "waitSearcher"), new KeyValuePair <bool?, string>(WaitFlush, "waitFlush"), new KeyValuePair <bool?, string>(ExpungeDeletes, "expungeDeletes") })
            {
                if (!p.Key.HasValue)
                {
                    continue;
                }

                var att = xml.CreateAttribute(p.Value);
                att.InnerText = p.Key.Value.ToString().ToLower();
                node.Attributes.Append(att);
            }

            if (MaxSegments.HasValue)
            {
                var att = xml.CreateAttribute("maxSegments");
                att.InnerText = MaxSegments.ToString();
                node.Attributes.Append(att);
            }

            return(connection.Post("/update", node.OuterXml));
        }
Beispiel #2
0
        /// <summary>
        /// Initializes SolrNet with the built-in container
        /// </summary>
        /// <typeparam name="T"></typeparam>
        /// <param name="connection"></param>
        public static void Init <T>(ISolrConnection connection)
        {
            var connectionKey = string.Format("{0}.{1}.{2}", typeof(SolrConnection), typeof(T), connection.GetType());

            Container.Register(connectionKey, c => connection);

            var activator = new SolrDocumentActivator <T>();

            Container.Register <ISolrDocumentActivator <T> >(c => activator);

            Container.Register(ChooseDocumentResponseParser <T>);

            Container.Register <ISolrResponseParser <T> >(typeof(ResultsResponseParser <T>).FullName, c => new ResultsResponseParser <T>(c.GetInstance <ISolrDocumentResponseParser <T> >()));
            Container.Register <ISolrResponseParser <T> >(typeof(HeaderResponseParser <T>).FullName, c => new HeaderResponseParser <T>());
            Container.Register <ISolrResponseParser <T> >(typeof(FacetsResponseParser <T>).FullName, c => new FacetsResponseParser <T>());
            Container.Register <ISolrResponseParser <T> >(typeof(HighlightingResponseParser <T>).FullName, c => new HighlightingResponseParser <T>());
            Container.Register <ISolrResponseParser <T> >(typeof(MoreLikeThisResponseParser <T>).FullName, c => new MoreLikeThisResponseParser <T>(c.GetInstance <ISolrDocumentResponseParser <T> >()));
            Container.Register <ISolrResponseParser <T> >(typeof(SpellCheckResponseParser <T>).FullName, c => new SpellCheckResponseParser <T>());
            Container.Register <ISolrResponseParser <T> >(typeof(StatsResponseParser <T>).FullName, c => new StatsResponseParser <T>());
            Container.Register <ISolrResponseParser <T> >(typeof(CollapseResponseParser <T>).FullName, c => new CollapseResponseParser <T>());

            Container.Register <ISolrQueryResultParser <T> >(c => new SolrQueryResultParser <T>(c.GetAllInstances <ISolrResponseParser <T> >().ToArray()));
            Container.Register <ISolrQueryExecuter <T> >(c => new SolrQueryExecuter <T>(c.GetInstance <ISolrQueryResultParser <T> >(), connection, c.GetInstance <ISolrQuerySerializer>(), c.GetInstance <ISolrFacetQuerySerializer>()));

            Container.Register(ChooseDocumentSerializer <T>);

            Container.Register <ISolrBasicOperations <T> >(c => new SolrBasicServer <T>(connection, c.GetInstance <ISolrQueryExecuter <T> >(), c.GetInstance <ISolrDocumentSerializer <T> >(), c.GetInstance <ISolrSchemaParser>(), c.GetInstance <ISolrHeaderResponseParser>(), c.GetInstance <ISolrQuerySerializer>(), c.GetInstance <ISolrDIHStatusParser>(), c.GetInstance <ISolrExtractResponseParser>()));
            Container.Register <ISolrBasicReadOnlyOperations <T> >(c => new SolrBasicServer <T>(connection, c.GetInstance <ISolrQueryExecuter <T> >(), c.GetInstance <ISolrDocumentSerializer <T> >(), c.GetInstance <ISolrSchemaParser>(), c.GetInstance <ISolrHeaderResponseParser>(), c.GetInstance <ISolrQuerySerializer>(), c.GetInstance <ISolrDIHStatusParser>(), c.GetInstance <ISolrExtractResponseParser>()));

            Container.Register <ISolrOperations <T> >(c => new SolrServer <T>(c.GetInstance <ISolrBasicOperations <T> >(), Container.GetInstance <IReadOnlyMappingManager>(), Container.GetInstance <IMappingValidator>()));
            Container.Register <ISolrReadOnlyOperations <T> >(c => new SolrServer <T>(c.GetInstance <ISolrBasicOperations <T> >(), Container.GetInstance <IReadOnlyMappingManager>(), Container.GetInstance <IMappingValidator>()));
        }
Beispiel #3
0
 public DSLQueryBetween(string fieldName, ISolrConnection connection, ISolrQuery query, RT from)
 {
     this.fieldName  = fieldName;
     this.connection = connection;
     this.query      = query;
     this.from       = from;
 }
Beispiel #4
0
        public string Execute(ISolrConnection connection)
        {
            var xml = new XmlDocument();
            var node = xml.CreateElement("commit");

            var keyValuePairs = new[] {
                new KeyValuePair<bool?, string>(WaitSearcher, "waitSearcher"),
                new KeyValuePair<bool?, string>(WaitFlush, "waitFlush"),
                new KeyValuePair<bool?, string>(SoftCommit, "softCommit"),
                new KeyValuePair<bool?, string>(ExpungeDeletes, "expungeDeletes")
            };

            foreach (var p in keyValuePairs) {
                if (!p.Key.HasValue)
                    continue;

                var att = xml.CreateAttribute(p.Value);
                att.InnerText = p.Key.Value.ToString().ToLower();
                node.Attributes.Append(att);
            }

            if (MaxSegments.HasValue) {
                var att = xml.CreateAttribute("maxSegments");
                att.InnerText = MaxSegments.ToString();
                node.Attributes.Append(att);
            }

            return connection.Post("/update", node.OuterXml);
        }
 public string Execute(ISolrConnection connection)
 {
     var xml = new XmlDocument();
     var deleteNode = xml.CreateElement("delete");
     if (parameters != null) {
         if (parameters.CommitWithin.HasValue) {
             var attr = xml.CreateAttribute("commitWithin");
             attr.Value = parameters.CommitWithin.Value.ToString(CultureInfo.InvariantCulture);
             deleteNode.Attributes.Append(attr);
         }
     }
     var param = new[] {
         KV.Create(FromPending, "fromPending"),
         KV.Create(FromCommitted, "fromCommitted")
     };
     foreach (var p in param) {
         if (p.Key.HasValue) {
             var att = xml.CreateAttribute(p.Value);
             att.InnerText = p.Key.Value.ToString().ToLower();
             deleteNode.Attributes.Append(att);
         }
     }
     deleteNode.InnerXml = string.Join("", deleteParam.ToXmlNode().Select(n => n.OuterXml).ToArray());
     return connection.Post("/update", deleteNode.OuterXml);
 }
        public Uri GetQuery(ISolrConnection connection, ISolrQuery query, Commands.Parameters.QueryOptions options)
        {
            var executor = new SolrQueryExecuter <object>(null, connection, querySerializer, facetQuerySerializer, null);
            var param    = executor.GetAllParameters(query, options);

            return(connection.GetQuery(SolrQueryExecuter <object> .DefaultHandler, param));
        }
Beispiel #7
0
        public string Execute(ISolrConnection connection)
        {
            var node = new XElement("commit");

            var keyValuePairs = new[] {
                new KeyValuePair <bool?, string>(WaitSearcher, "waitSearcher"),
                new KeyValuePair <bool?, string>(WaitFlush, "waitFlush"),
                new KeyValuePair <bool?, string>(ExpungeDeletes, "expungeDeletes")
            };

            foreach (var p in keyValuePairs)
            {
                if (!p.Key.HasValue)
                {
                    continue;
                }

                var att = new XAttribute(p.Value, p.Key.Value.ToString().ToLower());
                node.Add(att);
            }

            if (MaxSegments.HasValue)
            {
                var att = new XAttribute("maxSegments", MaxSegments.ToString());
                node.Add(att);
            }

            return(connection.Post("/update", node.ToString(SaveOptions.DisableFormatting)));
        }
Beispiel #8
0
 /// <summary>
 /// Initializes a new instance of the <see cref="SolrCoreReplication"/> class.
 /// </summary>
 public SolrCoreReplication(ISolrConnection connection, ISolrReplicationStatusResponseParser statusParser, ISolrReplicationIndexVersionResponseParser indexversionParser, ISolrReplicationDetailsResponseParser detailsParser)
 {
     this.connection         = connection;
     this.statusParser       = statusParser;
     this.indexversionParser = indexversionParser;
     this.detailsParser      = detailsParser;
 }
Beispiel #9
0
        /// <summary>
        /// Initializes SolrNet with the built-in container
        /// </summary>
        /// <typeparam name="T"></typeparam>
        /// <param name="connection"></param>
        public static void Init <T>(ISolrConnection connection)
        {
            var connectionKey = string.Format("{0}.{1}.{2}", typeof(SolrConnection), typeof(T), connection.GetType());

            Container.Register(connectionKey, c => connection);

            var activator = new SolrDocumentActivator <T>();

            Container.Register <ISolrDocumentActivator <T> >(c => activator);

            Container.Register(ChooseDocumentResponseParser <T>);

            Container.Register <ISolrAbstractResponseParser <T> >(c => new DefaultResponseParser <T>(c.GetInstance <ISolrDocumentResponseParser <T> >()));

            Container.Register <ISolrMoreLikeThisHandlerQueryResultsParser <T> >(c => new SolrMoreLikeThisHandlerQueryResultsParser <T>(c.GetAllInstances <ISolrAbstractResponseParser <T> >().ToArray()));
            Container.Register <ISolrQueryExecuter <T> >(c => new SolrQueryExecuter <T>(c.GetInstance <ISolrAbstractResponseParser <T> >(), connection, c.GetInstance <ISolrQuerySerializer>(), c.GetInstance <ISolrFacetQuerySerializer>(), c.GetInstance <ISolrMoreLikeThisHandlerQueryResultsParser <T> >()));

            Container.Register(ChooseDocumentSerializer <T>);

            Container.Register <ISolrBasicOperations <T> >(c => new SolrBasicServer <T>(connection, c.GetInstance <ISolrQueryExecuter <T> >(), c.GetInstance <ISolrDocumentSerializer <T> >(), c.GetInstance <ISolrSchemaParser>(), c.GetInstance <ISolrHeaderResponseParser>(), c.GetInstance <ISolrQuerySerializer>(), c.GetInstance <ISolrDIHStatusParser>(), c.GetInstance <ISolrExtractResponseParser>()));
            Container.Register <ISolrBasicReadOnlyOperations <T> >(c => new SolrBasicServer <T>(connection, c.GetInstance <ISolrQueryExecuter <T> >(), c.GetInstance <ISolrDocumentSerializer <T> >(), c.GetInstance <ISolrSchemaParser>(), c.GetInstance <ISolrHeaderResponseParser>(), c.GetInstance <ISolrQuerySerializer>(), c.GetInstance <ISolrDIHStatusParser>(), c.GetInstance <ISolrExtractResponseParser>()));

            Container.Register <ISolrOperations <T> >(c => new SolrServer <T>(c.GetInstance <ISolrBasicOperations <T> >(), Container.GetInstance <IReadOnlyMappingManager>(), Container.GetInstance <IMappingValidator>()));
            Container.Register <ISolrReadOnlyOperations <T> >(c => new SolrServer <T>(c.GetInstance <ISolrBasicOperations <T> >(), Container.GetInstance <IReadOnlyMappingManager>(), Container.GetInstance <IMappingValidator>()));

            var coreAdminKey = typeof(ISolrCoreAdmin).Name + connectionKey;

            Container.Register <ISolrCoreAdmin>(coreAdminKey, c => new SolrCoreAdmin(connection, c.GetInstance <ISolrHeaderResponseParser>(), c.GetInstance <ISolrStatusResponseParser>()));
        }
Beispiel #10
0
 /// <summary>
 /// Initializes a new instance of the <see cref="SolrCoreReplication"/> class.
 /// </summary>
 public SolrCoreReplication(ISolrConnection connection, ISolrReplicationStatusResponseParser statusParser, ISolrReplicationIndexVersionResponseParser indexversionParser, ISolrReplicationDetailsResponseParser detailsParser)
 {
     this.connection = connection;
     this.statusParser = statusParser;
     this.indexversionParser = indexversionParser;
     this.detailsParser = detailsParser;
 }
Beispiel #11
0
 /// <summary>
 /// Connects to the specified Solr server URL.
 /// </summary>
 /// <param name="serverURL">The server URL.</param>
 /// <param name="timeout">The HTTP connection timeout.</param>
 public static void Connect(string serverURL, int timeout)
 {
     Connection = new SolrConnection(serverURL)
     {
         Timeout = timeout
     };
 }
Beispiel #12
0
        public string Execute(ISolrConnection connection)
        {
            var xml = ConvertToXml();

            xml = RemoveControlCharacters(xml);
            return(connection.Post("/update", xml));
        }
Beispiel #13
0
        public string Execute(ISolrConnection connection)
        {
            var xml        = new XmlDocument();
            var deleteNode = xml.CreateElement("delete");

            if (parameters != null)
            {
                if (parameters.CommitWithin.HasValue)
                {
                    var attr = xml.CreateAttribute("commitWithin");
                    attr.Value = parameters.CommitWithin.Value.ToString(CultureInfo.InvariantCulture);
                    deleteNode.Attributes.Append(attr);
                }
            }
            var param = new[] {
                KV.Create(FromPending, "fromPending"),
                KV.Create(FromCommitted, "fromCommitted")
            };

            foreach (var p in param)
            {
                if (p.Key.HasValue)
                {
                    var att = xml.CreateAttribute(p.Value);
                    att.InnerText = p.Key.Value.ToString().ToLower();
                    deleteNode.Attributes.Append(att);
                }
            }
            deleteNode.InnerXml = string.Join("", deleteParam.ToXmlNode().Select(n => n.OuterXml).ToArray());
            return(connection.Post("/update", deleteNode.OuterXml));
        }
Beispiel #14
0
        public string Execute(ISolrConnection connection)
        {
            var deleteNode = new XElement("delete");

            if (parameters != null)
            {
                if (parameters.CommitWithin.HasValue)
                {
                    var attr = new XAttribute("commitWithin", parameters.CommitWithin.Value.ToString(CultureInfo.InvariantCulture));
                    deleteNode.Add(attr);
                }
            }
            var param = new[] {
                KV.Create(FromPending, "fromPending"),
                KV.Create(FromCommitted, "fromCommitted")
            };

            foreach (var p in param)
            {
                if (p.Key.HasValue)
                {
                    var att = new XAttribute(p.Value, p.Key.Value.ToString().ToLower());
                    deleteNode.Add(att);
                }
            }
            deleteNode.Add(deleteParam.ToXmlNode().ToArray());
            return(connection.Post("/update", deleteNode.ToString(SaveOptions.DisableFormatting)));
        }
Beispiel #15
0
        /// <summary>
        /// Executes this command
        /// </summary>
        /// <param name="connection">The Solr connection</param>
        /// <returns></returns>
        public async Task <string> Execute(ISolrConnection connection)
        {
            string  flux = string.Empty;
            JObject json = new JObject();

            foreach (var item in this.documents)
            {
                var cmd = new SolrAddRootCommandObject <T>(item.Key);

                flux = JsonConvert.SerializeObject(cmd);

                PropertyInfo[] myPropertyInfo;
                Dictionary <string, object> dictionnaryProperties = new Dictionary <string, object>();

                myPropertyInfo = Type.GetType(typeof(T).AssemblyQualifiedName).GetProperties();
                for (int i = 0; i < myPropertyInfo.Length; i++)
                {
                    dictionnaryProperties = myPropertyInfo[i].GetPropertyAttributes(dictionnaryProperties);
                }

                json = JObject.Parse(flux);

                var fieldDictionaryList = new List <string>();

                foreach (var dictionaryItem in dictionnaryProperties)
                {
                    fieldDictionaryList.Add(dictionaryItem.Key);
                }

                string formattedFlux = RemoveFields(json.SelectToken("add.doc"), fieldDictionaryList).ToString();
            }

            return(await connection.Post("/update", json.ToString()));
        }
Beispiel #16
0
        public Task <string> ExecuteAsync(ISolrConnection connection)
        {
            string json  = GetAtomicUpdateJson();
            var    bytes = Encoding.UTF8.GetBytes(json);

            using (var content = new MemoryStream(bytes))
                return(connection.PostStreamAsync("/update", "text/json; charset=utf-8", content, GetParamsAsKvp()));
        }
Beispiel #17
0
 public SolrQueryExecuter(ISolrQueryResultParser <T> resultParser, ISolrConnection connection, ISolrQuerySerializer querySerializer, ISolrFacetQuerySerializer facetQuerySerializer)
 {
     this.resultParser         = resultParser;
     this.connection           = connection;
     this.querySerializer      = querySerializer;
     this.facetQuerySerializer = facetQuerySerializer;
     DefaultRows = ConstDefaultRows;
 }
        public async Task <string> Execute(ISolrConnection connection)
        {
            SolrCommitRootCommandObject cmd = new SolrCommitRootCommandObject();

            string flux = JsonConvert.SerializeObject(cmd);

            return(await connection.Post("/update", flux));
        }
        /// <summary>
        /// Executes the SOLR delta import for specified collection.
        /// </summary>
        /// <param name="connection">Connection that specify collection to update.</param>
        /// <returns>Result of the operation.</returns>
        public string Execute(ISolrConnection connection)
        {
            if (connection == null)
            {
                throw new ArgumentNullException("connection");
            }

            return connection.Post("/dataimport?command=delta-import", string.Empty);
        }
Beispiel #20
0
 /// <summary>
 /// Constructor
 /// </summary>
 /// <param name="resultParser"></param>
 /// <param name="connection"></param>
 /// <param name="querySerializer"></param>
 /// <param name="facetQuerySerializer"></param>
 /// <param name="mlthResultParser"></param>
 public SolrQueryExecuter(ISolrConnection connection, ISolrQuerySerializer querySerializer, ISolrFacetQuerySerializer facetQuerySerializer)
 {
     this.connection           = connection;
     this.querySerializer      = querySerializer;
     this.facetQuerySerializer = facetQuerySerializer;
     DefaultRows         = ConstDefaultRows;
     Handler             = DefaultHandler;
     MoreLikeThisHandler = DefaultMoreLikeThisHandler;
 }
 public void TestCache(ISolrConnection conn)
 {
     foreach (var i in Enumerable.Range(0, 1000))
     {
         conn.Get("/select/", new Dictionary <string, string> {
             { "q", "*:*" },
         });
     }
 }
 /// <summary>
 /// Make a new CrownPeakQueryExecuter
 /// </summary>
 /// <param name="resultParser"></param>
 /// <param name="connection"></param>
 /// <param name="querySerializer"></param>
 /// <param name="facetQuerySerializer"></param>
 /// <param name="mlthResultParser"></param>
 public CrownPeakQueryExecuter(ISolrAbstractResponseParser <T> resultParser,
                               ISolrConnection connection, ISolrQuerySerializer querySerializer,
                               ISolrFacetQuerySerializer facetQuerySerializer,
                               ISolrMoreLikeThisHandlerQueryResultsParser <T> mlthResultParser)
     : base(resultParser, connection, querySerializer, facetQuerySerializer, mlthResultParser)
 {
     _parser     = resultParser as ICrownPeakResponseParser <T>;
     _connection = connection;
 }
Beispiel #23
0
 public SolrBasicServer(ISolrConnection connection, ISolrQueryExecuter <T> queryExecuter, ISolrDocumentSerializer <T> documentSerializer, ISolrSchemaParser schemaParser, ISolrHeaderResponseParser headerParser, ISolrQuerySerializer querySerializer, ISolrDIHStatusParser dihStatusParser, ISolrExtractResponseParser extractResponseParser)
     : base(connection, headerParser)
 {
     this.extractResponseParser = extractResponseParser;
     this.queryExecuter         = queryExecuter;
     this.documentSerializer    = documentSerializer;
     this.schemaParser          = schemaParser;
     this.querySerializer       = querySerializer;
     this.dihStatusParser       = dihStatusParser;
 }
Beispiel #24
0
        /// <summary>
        /// Default constructor of class
        /// </summary>
        public DocumentUpdate(
            ISolrConnection solrConnection,
            ISolrExpressServiceProvider <TDocument> serviceProvider)
        {
            Checker.IsNull(solrConnection);
            Checker.IsNull(serviceProvider);

            this._solrConnection = solrConnection;
            this.ServiceProvider = serviceProvider;
        }
Beispiel #25
0
 /// <summary>
 /// Constructor
 /// </summary>
 /// <param name="resultParser"></param>
 /// <param name="connection"></param>
 /// <param name="querySerializer"></param>
 /// <param name="facetQuerySerializer"></param>
 /// <param name="mlthResultParser"></param>
 public SolrQueryExecuter(ISolrAbstractResponseParser <T> resultParser, ISolrConnection connection, ISolrQuerySerializer querySerializer, ISolrFacetQuerySerializer facetQuerySerializer, ISolrMoreLikeThisHandlerQueryResultsParser <T> mlthResultParser)
 {
     this.resultParser         = resultParser;
     this.mlthResultParser     = mlthResultParser;
     this.connection           = connection;
     this.querySerializer      = querySerializer;
     this.facetQuerySerializer = facetQuerySerializer;
     DefaultRows         = ConstDefaultRows;
     MoreLikeThisHandler = DefaultMoreLikeThisHandler;
 }
 public SolrBasicServer(ISolrConnection connection, ISolrQueryExecuter <T> queryExecuter, ISolrQuerySerializer querySerializer, ISolrExtractResponseParser extractResponseParser = null)
 {
     this.connection = connection;
     //this.extractResponseParser = extractResponseParser;
     this.queryExecuter = queryExecuter;
     //this.documentSerializer = documentSerializer;
     //this.schemaParser = schemaParser;
     //this.headerParser = headerParser;
     this.querySerializer = querySerializer;
     //this.dihStatusParser = dihStatusParser;
 }
Beispiel #27
0
 public SolrSearchService(
     IPostRepository posts,
     ISolrOperations <Post> postOp,
     ISolrConnection connection,
     IConfigurationService service)
 {
     this.posts      = posts;
     this.postOp     = postOp;
     this.connection = connection;
     this.service    = service;
 }
Beispiel #28
0
 public DSLQueryRange(ISolrConnection connection, ISolrQuery query, string fieldName, RT from, RT to) : base(connection)
 {
     this.query = new SolrMultipleCriteriaQuery(new[] {
         query,
         new SolrQueryByRange <RT>(fieldName, from, to)
     });
     prevQuery      = query;
     this.fieldName = fieldName;
     this.from      = from;
     this.to        = to;
 }
 public SolrSearchService(
     IPostRepository posts, 
     ISolrOperations<Post> postOp, 
     ISolrConnection connection,
     IConfigurationService service)
 {
     this.posts = posts;
     this.postOp = postOp;
     this.connection = connection;
     this.service = service;
 }
Beispiel #30
0
 /// <summary>
 /// Executes this command
 /// </summary>
 /// <param name="connection"></param>
 /// <returns></returns>
 public string Execute(ISolrConnection connection)
 {
     var xml = new XmlDocument();
     var node = xml.CreateElement("optimize");
     foreach (var p in new[] {new KeyValuePair<bool?, string>(WaitSearcher, "waitSearcher"), new KeyValuePair<bool?, string>(WaitFlush, "waitFlush")}) {
         if (p.Key.HasValue) {
             var att = xml.CreateAttribute(p.Value);
             att.InnerText = p.Key.Value.ToString().ToLower();
             node.Attributes.Append(att);
         }
     }
     return connection.Post("/update", node.OuterXml);
 }
Beispiel #31
0
 public string Execute(ISolrConnection connection)
 {
     var xml = new XmlDocument();
     var deleteNode = xml.CreateElement("delete");
     foreach (var p in new[] {new KeyValuePair<bool?, string>(FromPending, "fromPending"), new KeyValuePair<bool?, string>(FromCommitted, "fromCommitted")}) {
         if (p.Key.HasValue) {
             var att = xml.CreateAttribute(p.Value);
             att.InnerText = p.Key.Value.ToString().ToLower();
             deleteNode.Attributes.Append(att);
         }
     }
     deleteNode.InnerXml = Func.Join(Func.Select(deleteParam.ToXmlNode(), n => n.OuterXml));
     return connection.Post("/update", deleteNode.OuterXml);
 }
Beispiel #32
0
        public static ISolrBasicOperations <T> GetBasicServer <T>(ISolrConnection connection)
        {
            ISolrFieldParser             fieldParser = new DefaultFieldParser();
            IReadOnlyMappingManager      mapper      = new MemoizingMappingManager(new AttributesMappingManager());
            ISolrDocumentPropertyVisitor visitor     = new DefaultDocumentVisitor(mapper, fieldParser);

            ISolrDocumentResponseParser <T> parser;

            if (typeof(T) == typeof(Dictionary <string, object>))
            {
                parser = (ISolrDocumentResponseParser <T>) new SolrDictionaryDocumentResponseParser(fieldParser);
            }
            else
            {
                parser = new SolrDocumentResponseParser <T>(mapper, visitor, new SolrDocumentActivator <T>());
            }

            ISolrAbstractResponseParser <T> resultParser = new DefaultResponseParser <T>(parser);

            ISolrFieldSerializer fieldSerializer = new DefaultFieldSerializer();

            ;
            ISolrQuerySerializer      querySerializer      = new DefaultQuerySerializer(fieldSerializer);
            ISolrFacetQuerySerializer facetQuerySerializer = new DefaultFacetQuerySerializer(querySerializer, fieldSerializer);
            // validate why only this?
            ISolrMoreLikeThisHandlerQueryResultsParser <T> mlthResultParser = new SolrMoreLikeThisHandlerQueryResultsParser <T>(new[] { resultParser });

            ISolrQueryExecuter <T> executor = new SolrQueryExecuter <T>(resultParser, connection, querySerializer, facetQuerySerializer, mlthResultParser);

            ISolrDocumentSerializer <T> documentSerializer;

            if (typeof(T) == typeof(Dictionary <string, object>))
            {
                documentSerializer = (ISolrDocumentSerializer <T>) new SolrDictionarySerializer(fieldSerializer);
            }
            else
            {
                documentSerializer = new SolrDocumentSerializer <T>(mapper, fieldSerializer);
            }

            ISolrSchemaParser          schemaParser          = new SolrSchemaParser();
            ISolrHeaderResponseParser  headerParser          = new HeaderResponseParser <T>();
            ISolrDIHStatusParser       dihStatusParser       = new SolrDIHStatusParser();
            ISolrExtractResponseParser extractResponseParser = new ExtractResponseParser(headerParser);

            ISolrBasicOperations <T> basicServer = new SolrBasicServer <T>(connection, executor, documentSerializer, schemaParser, headerParser, querySerializer, dihStatusParser, extractResponseParser);

            return(basicServer);
        }
Beispiel #33
0
        /// <summary>
        /// Initializes SolrNet with the built-in container
        /// </summary>
        /// <typeparam name="T"></typeparam>
        /// <param name="connection"></param>
        public static void Init <T>(ISolrConnection connection)
        {
            var connectionKey = string.Format("{0}.{1}.{2}", typeof(SolrConnection), typeof(T), connection.GetType());

            Container.Register(connectionKey, c => connection);

            var activator = new SolrDocumentActivator <T>();

            Container.Register <ISolrDocumentActivator <T> >(c => activator);
            Container.Register <ISolrQueryExecuter <T> >(c => new SolrQueryExecuter <T>(connection, c.GetInstance <ISolrQuerySerializer>(), c.GetInstance <ISolrFacetQuerySerializer>()));
            Container.Register <ISolrBasicOperations <T> >(c => new SolrBasicServer <T>(connection, c.GetInstance <ISolrQueryExecuter <T> >(), c.GetInstance <ISolrQuerySerializer>()));         //todo
            Container.Register <ISolrBasicReadOnlyOperations <T> >(c => new SolrBasicServer <T>(connection, c.GetInstance <ISolrQueryExecuter <T> >(), c.GetInstance <ISolrQuerySerializer>())); //todo
            Container.Register <ISolrOperations <T> >(c => new SolrServer <T>(c.GetInstance <ISolrBasicOperations <T> >(), Container.GetInstance <IReadOnlyMappingManager>()));
            Container.Register <ISolrReadOnlyOperations <T> >(c => new SolrServer <T>(c.GetInstance <ISolrBasicOperations <T> >(), Container.GetInstance <IReadOnlyMappingManager>()));
        }
        public ISolrOperations <T> GetServer(ISolrConnection connection)
        {
            var basicServer = GetBasicServer(connection);

            MappingValidator = new MappingValidator(MappingManager, new IValidationRule[]
            {
                new MappedPropertiesIsInSolrSchemaRule(),
                new RequiredFieldsAreMappedRule(),
                new UniqueKeyMatchesMappingRule(),
                new MultivaluedMappedToCollectionRule()
            });

            ISolrOperations <T> server = new SolrServer <T>(basicServer, MappingManager, MappingValidator);

            return(server);
        }
Beispiel #35
0
        /// <summary>
        /// Initializes the Solr service with a connection to solr.
        /// </summary>
        /// <param name="connection">The solr connection to use.</param>
        /// <param name="force">If true, this will reinitialize the server connection if one already exists.</param>
        public static void Init(ISolrConnection connection, bool force = false)
        {
            if (force)
            {
                ClearContainer();
            }

            if (!IsInitialized)
            {
                mSolr = connection;
                Startup.Init <SolrIndex>(mSolr);
                Startup.Init <Dictionary <string, object> >(mSolr);
                SolrOperations = ServiceLocator.Current.GetInstance <ISolrOperations <Dictionary <string, object> > >();
                IsInitialized  = true;
                //IsSolrInitialized = true;
            }
        }
Beispiel #36
0
        public static ISolrOperations <T> GetServer <T>(ISolrConnection connection)
        {
            IReadOnlyMappingManager mapper = new MemoizingMappingManager(new AttributesMappingManager());

            IReadOnlyMappingManager mappingManager   = mapper;
            IMappingValidator       mappingValidator = new MappingValidator(mapper, new IValidationRule[] {
                new MappedPropertiesIsInSolrSchemaRule(),
                new RequiredFieldsAreMappedRule(),
                new UniqueKeyMatchesMappingRule(),
                new MultivaluedMappedToCollectionRule()
            });

            var basicServer            = GetBasicServer <T>(connection);
            ISolrOperations <T> server = new SolrServer <T>(basicServer, mappingManager, mappingValidator);

            return(server);
        }
		public string Execute(ISolrConnection connection) {
			var deleteNode = new XElement("delete");
            if (parameters != null) {
                if (parameters.CommitWithin.HasValue) {
                    var attr = new XAttribute("commitWithin", parameters.CommitWithin.Value.ToString(CultureInfo.InvariantCulture));
                    deleteNode.Add(attr);
                }
            }
		    var param = new[] {
		        KV.Create(FromPending, "fromPending"), 
                KV.Create(FromCommitted, "fromCommitted")
		    };
		    foreach (var p in param) {
				if (p.Key.HasValue) {
                    var att = new XAttribute(p.Value, p.Key.Value.ToString().ToLower());
					deleteNode.Add(att);
				}
			}
            deleteNode.Add(deleteParam.ToXmlNode().ToArray());
			return connection.Post("/update", deleteNode.ToString(SaveOptions.DisableFormatting));
		}
Beispiel #38
0
		public string Execute(ISolrConnection connection) {
			var node = new XElement("commit");

		    var keyValuePairs = new[] {
		        new KeyValuePair<bool?, string>(WaitSearcher, "waitSearcher"), 
                new KeyValuePair<bool?, string>(WaitFlush, "waitFlush"), 
                new KeyValuePair<bool?, string>(ExpungeDeletes, "expungeDeletes")
		    };

		    foreach (var p in keyValuePairs) {
                if (!p.Key.HasValue) 
                    continue;

                var att = new XAttribute(p.Value, p.Key.Value.ToString().ToLower());
                node.Add(att);
            }

            if (MaxSegments.HasValue) {
                var att = new XAttribute("maxSegments", MaxSegments.ToString());
                node.Add(att);
            }

			return connection.Post("/update", node.ToString(SaveOptions.DisableFormatting));
		}
Beispiel #39
0
 public DeleteBy(ISolrConnection connection)
 {
     this.connection = connection;
 }
Beispiel #40
0
 /// <summary>
 /// Gets the raw Solr schema
 /// </summary>
 /// <param name="connection"></param>
 /// <returns></returns>
 public string Execute(ISolrConnection connection)
 {
     return connection.Get("/admin/file", new[] {new KeyValuePair<string, string>("file", "schema.xml")});
 }
 public void TestCache(ISolrConnection conn)
 {
     foreach (var i in Enumerable.Range(0, 1000)) {
         conn.Get("/select/", new Dictionary<string, string> {
             {"q", "*:*"},
         });
     }
 }
 /// <summary>
 /// Executes a Replication command
 /// </summary>
 /// <param name="connection">The SolrConnection to use.</param>
 /// <returns>The results of the Command.</returns>
 public string Execute(ISolrConnection connection)
 {
     return connection.Get("/replication", Parameters.ToArray());
 }
 public ConsoleLoggingConnection(string url)
 {
     connection = new SolrConnection(url);
 }
Beispiel #44
0
 /// <summary>
 /// Builds an instance of core admin manager with the specified connection
 /// </summary>
 /// <param name="conn"></param>
 /// <returns></returns>
 public ISolrCoreAdmin BuildCoreAdmin(ISolrConnection conn)
 {
     return(new SolrCoreAdmin(conn, Kernel.Resolve <ISolrHeaderResponseParser>(), Kernel.Resolve <ISolrStatusResponseParser>()));
 }
Beispiel #45
0
 public string Execute(ISolrConnection connection)
 {
     return connection.Get("/admin/ping", new Dictionary<string, string>());
 }
Beispiel #46
0
 /// <summary>
 /// Initializes a new instance of the <see cref="SolrCoreAdmin"/> class.
 /// </summary>
 /// <param name="connection">The connection.</param>
 public SolrCoreAdmin(ISolrConnection connection)
 {
     this.connection = connection;
 }
Beispiel #47
0
 /// <summary>
 /// Initializes a new instance of the <see cref="SolrCoreAdmin"/> class.
 /// </summary>
 /// <param name="connection">The connection.</param>
 /// <param name="headerParser">The header parser.</param>
 public SolrCoreAdmin(ISolrConnection connection, ISolrHeaderResponseParser headerParser)
 {
     this.connection = connection;
     this.headerParser = headerParser;
 }
 public Uri GetQuery(ISolrConnection connection, ISolrQuery query, Commands.Parameters.QueryOptions options)
 {
     var executor = new SolrQueryExecuter<object>(null, connection, querySerializer, facetQuerySerializer, null);
     var param = executor.GetAllParameters(query, options);
     return connection.GetQuery(SolrQueryExecuter<object>.DefaultHandler, param);
 }
Beispiel #49
0
		public PostSolrConnection(ISolrConnection conn, string serverUrl)
		{
			this.conn = conn;
			this.serverUrl = serverUrl;
		}
Beispiel #50
0
 /// <summary>
 /// Builds an instance of core admin manager with the specified connection
 /// </summary>
 /// <param name="conn"></param>
 /// <returns></returns>
 public ISolrCoreAdmin BuildCoreAdmin(ISolrConnection conn) {
     return new SolrCoreAdmin(conn, Kernel.Resolve<ISolrHeaderResponseParser>(), Kernel.Resolve<ISolrStatusResponseParser>());            
 }
Beispiel #51
0
 /// <summary>
 /// Executes a Core command
 /// </summary>
 /// <param name="connection">The SolrConnection to use.</param>
 /// <returns>The results of the Command.</returns>
 public string Execute(ISolrConnection connection)
 {
     return connection.Get("/admin/cores", Parameters.ToArray());
 }
 public SearchConnection(ISolrConnection connection)
 {
     this.connection = connection;
 }
 public LoggingConnection(ISolrConnection connection)
 {
     this.connection = connection;
 }
Beispiel #54
0
 public string Execute(ISolrConnection connection)
 {
     return connection.Post("/update", "<rollback/>");
 }
Beispiel #55
0
 /// <summary>
 /// Initializes a new instance of the <see cref="SolrCoreAdmin"/> class.
 /// </summary>
 public SolrCoreAdmin(ISolrConnection connection, ISolrHeaderResponseParser headerParser, ISolrStatusResponseParser resultParser) {
     this.connection = connection;
     this.headerParser = headerParser;
     this.resultParser = resultParser;
 }
Beispiel #56
0
 public string Execute(ISolrConnection connection) {
     var queryParameters = ConvertToQueryParameters();
     return connection.PostStream("/update/extract", parameters.StreamType, parameters.Content, queryParameters);
 }