def testParseConfig(self): schema_xml = getData("schema.xml") schema = SolrSchema(schema_xml.split("\n\n", 1)[1]) self.assertEqual(len(schema), 21) # 21 items defined in schema.xml self.assertEqual(schema["defaultSearchField"], "text") self.assertEqual(schema["uniqueKey"], "id") self.assertEqual(schema["solrQueryParser"].defaultOperator, "OR") self.assertEqual(schema["requiredFields"], ["id", "name"]) self.assertEqual(schema["id"].type, "string") self.assertEqual(schema["id"].class_, "solr.StrField") self.assertEqual(schema["id"].required, True) self.assertEqual(schema["id"].omitNorms, True) self.assertEqual(schema["id"].multiValued, False) self.assertEqual(schema["cat"].class_, "solr.TextField") self.assertEqual(schema["cat"].required, False) self.assertEqual(schema["cat"].multiValued, True) self.assertEqual(schema["cat"].termVectors, True) self.assertEqual(schema["sku"].positionIncrementGap, "100") self.assertEqual(schema.features.multiValued, True) self.assertEqual(schema.weight.class_, "solr.SortableFloatField") self.assertEqual(schema.popularity.class_, "solr.SortableIntField") self.assertEqual(schema.inStock.class_, "solr.BoolField") self.assertEqual(schema.timestamp.class_, "solr.DateField") self.assertEqual(schema.timestamp.default, "NOW") self.assertEqual(schema.timestamp.multiValued, False) self.assertEqual(schema.timestamp.indexed, True) self.assertEqual(schema.word.indexed, False) fields = schema.values() self.assertEqual(len([f for f in fields if getattr(f, "required", False)]), 2) self.assertEqual(len([f for f in fields if getattr(f, "multiValued", False)]), 3)
def testParseConfig(self): schema_xml = getData('schema.xml') schema = SolrSchema(schema_xml.split('\n\n', 1)[1]) self.assertEqual(len(schema), 21) # 21 items defined in schema.xml self.assertEqual(schema['defaultSearchField'], 'text') self.assertEqual(schema['uniqueKey'], 'id') self.assertEqual(schema['solrQueryParser'].defaultOperator, 'OR') self.assertEqual(schema['requiredFields'], ['id', 'name']) self.assertEqual(schema['id'].type, 'string') self.assertEqual(schema['id'].class_, 'solr.StrField') self.assertEqual(schema['id'].required, True) self.assertEqual(schema['id'].omitNorms, True) self.assertEqual(schema['id'].multiValued, False) self.assertEqual(schema['cat'].class_, 'solr.TextField') self.assertEqual(schema['cat'].required, False) self.assertEqual(schema['cat'].multiValued, True) self.assertEqual(schema['cat'].termVectors, True) self.assertEqual(schema['sku'].positionIncrementGap, '100') self.assertEqual(schema.features.multiValued, True) self.assertEqual(schema.weight.class_, 'solr.SortableFloatField') self.assertEqual(schema.popularity.class_, 'solr.SortableIntField') self.assertEqual(schema.inStock.class_, 'solr.BoolField') self.assertEqual(schema.timestamp.class_, 'solr.DateField') self.assertEqual(schema.timestamp.default, 'NOW') self.assertEqual(schema.timestamp.multiValued, False) self.assertEqual(schema.timestamp.indexed, True) self.assertEqual(schema.word.indexed, False) fields = schema.values() self.assertEqual(len([f for f in fields if getattr(f, 'required', False)]), 2) self.assertEqual(len([f for f in fields if getattr(f, 'multiValued', False)]), 3)
def testParseConfig(self): schema_xml = getData("schema.xml").decode("utf-8") schema = SolrSchema(schema_xml.split("\n\n", 1)[1]) self.assertEqual(len(schema), 21) # 21 items defined in schema.xml self.assertEqual(schema["defaultSearchField"], "text") self.assertEqual(schema["uniqueKey"], "id") self.assertEqual(schema["solrQueryParser"].defaultOperator, "OR") self.assertEqual(schema["requiredFields"], ["id", "name"]) self.assertEqual(schema["id"].type, "string") self.assertEqual(schema["id"].class_, "solr.StrField") self.assertEqual(schema["id"].required, True) self.assertEqual(schema["id"].omitNorms, True) self.assertEqual(schema["id"].multiValued, False) self.assertEqual(schema["cat"].class_, "solr.TextField") self.assertEqual(schema["cat"].required, False) self.assertEqual(schema["cat"].multiValued, True) self.assertEqual(schema["cat"].termVectors, True) self.assertEqual(schema["sku"].positionIncrementGap, "100") self.assertEqual(schema.features.multiValued, True) self.assertEqual(schema.weight.class_, "solr.SortableFloatField") self.assertEqual(schema.popularity.class_, "solr.SortableIntField") self.assertEqual(schema.inStock.class_, "solr.BoolField") self.assertEqual(schema.timestamp.class_, "solr.DateField") self.assertEqual(schema.timestamp.default, "NOW") self.assertEqual(schema.timestamp.multiValued, False) self.assertEqual(schema.timestamp.indexed, True) self.assertEqual(schema.word.indexed, False) fields = list(schema.values()) self.assertEqual(len([f for f in fields if getattr(f, "required", False)]), 2) self.assertEqual( len([f for f in fields if getattr(f, "multiValued", False)]), 3 )
def getSchema(self): schema_url = '%s/admin/file/?file=schema.xml' logger.debug('getting schema from: %s', schema_url % self.solrBase) try: self.conn.request('GET', schema_url % self.solrBase) response = self.conn.getresponse() except ( socket.error, httplib.CannotSendRequest, httplib.ResponseNotReady, httplib.BadStatusLine ): # see `doPost` method for more info about these exceptions self.__reconnect() self.conn.request('GET', schema_url % self.solrBase) response = self.conn.getresponse() if response.status == 200: xml = response.read() return SolrSchema(xml.strip()) self.__errcheck(response) # raise a SolrConnectionException
def testSortIndexCleanup(self): cleanup = cleanupQueryParameters schema = SolrSchema() # a non-existing sort index should be removed params = cleanup(dict(sort='foo asc'), schema) self.assertEqual(params, dict()) # the same goes when the given index isn't indexed schema['foo'] = SolrField(indexed=False) params = cleanup(dict(sort='foo asc'), schema) self.assertEqual(params, dict()) # a suitable index will be left intact, of course... schema['foo'].indexed = True params = cleanup(dict(sort='foo asc'), schema) self.assertEqual(params, dict(sort='foo asc')) # also make sure sort index aliases work, if the alias index exists params = cleanup(dict(sort='sortable_title asc'), schema) self.assertEqual(params, dict()) schema['Title'] = SolrField(indexed=True) params = cleanup(dict(sort='sortable_title asc'), schema) self.assertEqual(params, dict(sort='Title asc'))
def getSchema(self): schema_url = "%s/admin/file/?file=schema.xml" # schema_url = '%s/admin/file/?file=managed-schema' logger.debug("getting schema from: %s", schema_url % self.solrBase) try: self.conn.request("GET", schema_url % self.solrBase) response = self.conn.getresponse() except ( socket.error, six.moves.http_client.CannotSendRequest, six.moves.http_client.ResponseNotReady, six.moves.http_client.BadStatusLine, ): # see `doPost` method for more info about these exceptions self.__reconnect() self.conn.request("GET", schema_url % self.solrBase) response = self.conn.getresponse() if response.status == 200: xml = response.read().decode("utf-8") return SolrSchema(xml.strip()) self.__errcheck(response) # raise a SolrConnectionException