public void FacetQuery() { var connection = new MSolrConnection(); connection.get += (url, param) => { Assert.AreEqual("/select", url); var expectedParams = new Dictionary <string, string> { { "q", "" }, { "rows", SolrQueryExecuter <TestDocumentWithUniqueKey> .ConstDefaultRows.ToString() }, { "facet", "true" }, { "facet.query", "id:1" }, }; CollectionAssert.AreEquivalent(expectedParams, param); return(EmbeddedResource.GetEmbeddedString(GetType(), "Resources.response.xml")); }; var querySerializer = new DefaultQuerySerializer(new DefaultFieldSerializer()); var facetQuerySerializer = new DefaultFacetQuerySerializer(querySerializer, new DefaultFieldSerializer()); var parser = new MSolrAbstractResponseParser <TestDocumentWithUniqueKey>(); parser.parse &= x => x.Stub(); var executer = new SolrQueryExecuter <TestDocumentWithUniqueKey>(parser, connection, querySerializer, facetQuerySerializer, null); var solr = new SolrBasicServer <TestDocumentWithUniqueKey>(connection, executer, null, null, null, null, null, null); var r = solr.Query(new SolrQuery(""), new QueryOptions { Facet = new FacetParameters { Queries = new ISolrFacetQuery[] { new SolrFacetQuery(new SolrQuery("id:1")), }, } }); Assert.AreEqual(1, connection.get.Calls); }
private static IList <KeyValuePair <string, string> > Serialize(object o) { var fieldSerializer = new DefaultFieldSerializer(); var serializer = new DefaultFacetQuerySerializer(new DefaultQuerySerializer(fieldSerializer), fieldSerializer); return(serializer.Serialize(o).ToList()); }
public void FacetFieldOptions() { var querySerializer = new SolrQuerySerializerStub("q"); var facetQuerySerializer = new DefaultFacetQuerySerializer(querySerializer, null); var queryExecuter = new SolrQueryExecuter <TestDocument>(null, null, querySerializer, facetQuerySerializer, null); var facetOptions = queryExecuter.GetFacetFieldOptions( new FacetParameters { Queries = new List <ISolrFacetQuery> { new SolrFacetQuery(new SolrQuery("q")), }, Prefix = "pref", EnumCacheMinDf = 123, Limit = 100, MinCount = 5, Missing = true, Offset = 55, Sort = true, }).ToDictionary(x => x.Key, x => x.Value); Assert.AreEqual("pref", facetOptions["facet.prefix"]); Assert.AreEqual("123", facetOptions["facet.enum.cache.minDf"]); Assert.AreEqual("100", facetOptions["facet.limit"]); Assert.AreEqual("5", facetOptions["facet.mincount"]); Assert.AreEqual("true", facetOptions["facet.missing"]); Assert.AreEqual("55", facetOptions["facet.offset"]); Assert.AreEqual("true", facetOptions["facet.sort"]); }
public void Facets() { var q = new Dictionary <string, string>(); q["q"] = ""; q["rows"] = SolrQueryExecuter <TestDocument> .ConstDefaultRows.ToString(); q["facet"] = "true"; q["facet.field"] = "Id"; q["facet.query"] = "id:[1 TO 5]"; var conn = new MockConnection(q); var querySerializer = new DefaultQuerySerializer(new DefaultFieldSerializer()); var parser = new MSolrAbstractResponseParser <TestDocument>(); parser.parse &= x => x.Stub(); var facetQuerySerializer = new DefaultFacetQuerySerializer(querySerializer, new DefaultFieldSerializer()); var queryExecuter = new SolrQueryExecuter <TestDocument>(parser, conn, querySerializer, facetQuerySerializer, null); queryExecuter.Execute(new SolrQuery(""), new QueryOptions { Facet = new FacetParameters { Queries = new ISolrFacetQuery[] { new SolrFacetFieldQuery("Id"), new SolrFacetQuery(new SolrQuery("id:[1 TO 5]")), } } }); }
public void MultipleFacetFields() { var conn = new MockConnection(new[] { KV.Create("q", ""), KV.Create("rows", SolrQueryExecuter <TestDocument> .ConstDefaultRows.ToString()), KV.Create("facet", "true"), KV.Create("facet.field", "Id"), KV.Create("facet.field", "OtherField"), }); var serializer = new DefaultQuerySerializer(new DefaultFieldSerializer()); var facetQuerySerializer = new DefaultFacetQuerySerializer(serializer, new DefaultFieldSerializer()); var parser = new MSolrAbstractResponseParser <TestDocument>(); parser.parse &= x => x.Stub(); var queryExecuter = new SolrQueryExecuter <TestDocument>(parser, conn, serializer, facetQuerySerializer, null); queryExecuter.Execute(new SolrQuery(""), new QueryOptions { Facet = new FacetParameters { Queries = new ISolrFacetQuery[] { new SolrFacetFieldQuery("Id"), new SolrFacetFieldQuery("OtherField"), } } }); }
public void FacetQuery() { var mocks = new MockRepository(); var query = new Dictionary <string, string>(); query["q"] = ""; query["rows"] = SolrQueryExecuter <TestDocumentWithUniqueKey> .ConstDefaultRows.ToString(); query["facet"] = "true"; query["facet.query"] = "id:1"; var connection = new MockConnection(query); var parser = mocks.StrictMock <ISolrQueryResultParser <TestDocumentWithUniqueKey> >(); var docSerializer = mocks.StrictMock <ISolrDocumentSerializer <TestDocumentWithUniqueKey> >(); var querySerializer = new DefaultQuerySerializer(new DefaultFieldSerializer()); var facetQuerySerializer = new DefaultFacetQuerySerializer(querySerializer, new DefaultFieldSerializer()); With.Mocks(mocks).Expecting(() => { Expect.On(parser) .Call(parser.Parse(null)) .IgnoreArguments() .Return(new SolrQueryResults <TestDocumentWithUniqueKey>()); }).Verify(() => { var executer = new SolrQueryExecuter <TestDocumentWithUniqueKey>(parser, connection, querySerializer, facetQuerySerializer); var solr = new SolrBasicServer <TestDocumentWithUniqueKey>(connection, executer, docSerializer, null, null, null, null, null); var r = solr.Query(new SolrQuery(""), new QueryOptions { Facet = new FacetParameters { Queries = new ISolrFacetQuery[] { new SolrFacetQuery(new SolrQuery("id:1")), }, } }); }); }
public void Facets() { var q = new Dictionary <string, string>(); q["q"] = ""; q["rows"] = SolrQueryExecuter <TestDocument> .ConstDefaultRows.ToString(); q["facet"] = "true"; q["facet.field"] = "Id"; q["facet.query"] = "id:[1 TO 5]"; var conn = new MockConnection(q); var mocks = new MockRepository(); var parser = mocks.DynamicMock <ISolrQueryResultParser <TestDocument> >(); var querySerializer = new DefaultQuerySerializer(new DefaultFieldSerializer()); var facetQuerySerializer = new DefaultFacetQuerySerializer(querySerializer, new DefaultFieldSerializer()); var queryExecuter = new SolrQueryExecuter <TestDocument>(parser, conn, querySerializer, facetQuerySerializer); queryExecuter.Execute(new SolrQuery(""), new QueryOptions { Facet = new FacetParameters { Queries = new ISolrFacetQuery[] { new SolrFacetFieldQuery("Id"), new SolrFacetQuery(new SolrQuery("id:[1 TO 5]")), } } }); }
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); }
public static AuthAdminSolrServer <T> CreateSolrServer(string connectionString, string coreIndex, IndexType indexType = IndexType.Solr) { var connection = BuildConnection.CreateSolrConnection(connectionString + coreIndex, indexType); var docSerializer = new SolrDocumentSerializer <T>(new AttributesMappingManager(), new DefaultFieldSerializer()); var headerResponseParser = new HeaderResponseParser <T>(); var solrFieldSerializer = new DefaultFieldSerializer(); var mapper = new AttributesMappingManager(); var dparser = new SolrDocumentResponseParser <T>(mapper, new DefaultDocumentVisitor(mapper, new DefaultFieldParser()), new SolrDocumentActivator <T>()); var parser = new DefaultResponseParser <T>(dparser); var querySerializer = new DefaultQuerySerializer(solrFieldSerializer); var facetQuerySerializer = new DefaultFacetQuerySerializer(querySerializer, new DefaultFieldSerializer()); var executer = new SolrQueryExecuter <T>(parser, connection, querySerializer, facetQuerySerializer, null); var basesolr = new SolrBasicServer <T>(connection, executer, docSerializer, null, headerResponseParser, null, null, null); return(new AuthAdminSolrServer <T>(basesolr, null, null)); }
public void FacetFieldQuery() { var mocks = new MockRepository(); var query = new Dictionary <string, string>(); query["q"] = "*:*"; query["facet"] = "true"; query["facet.field"] = "cat"; query["rows"] = "0"; var connection = new MockConnection(query); var resultParser = mocks.StrictMock <ISolrQueryResultParser <TestDocumentWithUniqueKey> >(); var mapper = mocks.StrictMock <IReadOnlyMappingManager>(); var validationManager = mocks.StrictMock <IMappingValidator>(); var docSerializer = mocks.StrictMock <ISolrDocumentSerializer <TestDocumentWithUniqueKey> >(); With.Mocks(mocks).Expecting(() => { Expect.On(resultParser) .Call(resultParser.Parse("")) .IgnoreArguments() .Repeat.Once() .Return(new SolrQueryResults <TestDocumentWithUniqueKey> { FacetFields = new Dictionary <string, ICollection <KeyValuePair <string, int> > > { { "cat", new List <KeyValuePair <string, int> > { new KeyValuePair <string, int>("electronics", 5), new KeyValuePair <string, int>("hard drive", 3), } } } }); }).Verify(() => { var querySerializer = new DefaultQuerySerializer(new DefaultFieldSerializer()); var facetQuerySerializer = new DefaultFacetQuerySerializer(querySerializer, new DefaultFieldSerializer()); var queryExecuter = new SolrQueryExecuter <TestDocumentWithUniqueKey>(resultParser, connection, querySerializer, facetQuerySerializer); var basicSolr = new SolrBasicServer <TestDocumentWithUniqueKey>(connection, queryExecuter, docSerializer, null, null, null, null, null); var solr = new SolrServer <TestDocumentWithUniqueKey>(basicSolr, mapper, validationManager); var r = solr.FacetFieldQuery(new SolrFacetFieldQuery("cat")); Assert.AreEqual(2, r.Count); Assert.AreEqual("electronics", r.First().Key); }); }
public void FacetField() { var connection = new MSolrConnection(); connection.get += new MFunc <string, IEnumerable <KeyValuePair <string, string> >, string>((url, param) => { Assert.Equal("/select", url); var expectedParams = new Dictionary <string, string> { { "q", "*:*" }, { "rows", SolrQueryExecuter <TestDocumentWithUniqueKey> .ConstDefaultRows.ToString() }, { "facet", "true" }, { "facet.field", "id" }, { "f.id.facet.limit", "3" }, }; Assert.Equal(expectedParams, param); //should ignore order return(EmbeddedResource.GetEmbeddedString(GetType(), "Resources.response.xml")); }); var parser = new MSolrAbstractResponseParser <TestDocumentWithUniqueKey>(); parser.parse &= x => x.Stub(); var querySerializer = new MSolrQuerySerializer(); querySerializer.serialize += _ => "*:*"; var facetQuerySerializer = new DefaultFacetQuerySerializer(querySerializer, new DefaultFieldSerializer()); var executer = new SolrQueryExecuter <TestDocumentWithUniqueKey>(parser, connection, querySerializer, facetQuerySerializer, null); var solr = new SolrBasicServer <TestDocumentWithUniqueKey>(connection, executer, null, null, null, null, null, null); var r = solr.Query(new SolrQuery("*:*"), new QueryOptions { Facet = new FacetParameters { Queries = new ISolrFacetQuery[] { new SolrFacetFieldQuery("id") { Limit = 3 }, }, } }); Assert.Equal(1, connection.get.Calls); }
public DefaultSolrLocator() { MappingManager = new MemoizingMappingManager(new AttributesMappingManager()); FieldParser = new DefaultFieldParser(); DocumentPropertyVisitor = new DefaultDocumentVisitor(MappingManager, FieldParser); if (typeof(T) == typeof(Dictionary <string, object>)) { DocumentResponseParser = (ISolrDocumentResponseParser <T>) new SolrDictionaryDocumentResponseParser(FieldParser); } else { DocumentResponseParser = new SolrDocumentResponseParser <T>(MappingManager, DocumentPropertyVisitor, new SolrDocumentActivator <T>()); } ResponseParser = new DefaultResponseParser <T>(DocumentResponseParser); SchemaParser = new SolrSchemaParser(); HeaderParser = new HeaderResponseParser <string>(); DihStatusParser = new SolrDIHStatusParser(); ExtractResponseParser = new ExtractResponseParser(HeaderParser); FieldSerializer = new DefaultFieldSerializer(); QuerySerializer = new DefaultQuerySerializer(FieldSerializer); FacetQuerySerializer = new DefaultFacetQuerySerializer(QuerySerializer, FieldSerializer); MlthResultParser = new SolrMoreLikeThisHandlerQueryResultsParser <T>(new[] { ResponseParser }); StatusResponseParser = new SolrStatusResponseParser(); if (typeof(T) == typeof(Dictionary <string, object>)) { DocumentSerializer = (ISolrDocumentSerializer <T>) new SolrDictionarySerializer(FieldSerializer); } else { DocumentSerializer = new SolrDocumentSerializer <T>(MappingManager, FieldSerializer); } HttpCache = new NullCache(); }
public void MultipleFacetFields() { var conn = new MockConnection(new[] { KVP("q", ""), KVP("rows", SolrQueryExecuter <TestDocument> .ConstDefaultRows.ToString()), KVP("facet", "true"), KVP("facet.field", "Id"), KVP("facet.field", "OtherField"), }); var mocks = new MockRepository(); var parser = mocks.DynamicMock <ISolrQueryResultParser <TestDocument> >(); var serializer = new DefaultQuerySerializer(new DefaultFieldSerializer()); var facetQuerySerializer = new DefaultFacetQuerySerializer(serializer, new DefaultFieldSerializer()); var queryExecuter = new SolrQueryExecuter <TestDocument>(parser, conn, serializer, facetQuerySerializer); queryExecuter.Execute(new SolrQuery(""), new QueryOptions { Facet = new FacetParameters { Queries = new ISolrFacetQuery[] { new SolrFacetFieldQuery("Id"), new SolrFacetFieldQuery("OtherField"), } } }); }