def test_build_schema(self): old_ui = connections['default'].get_unified_index() (content_field_name, mapping) = self.sb.build_schema(old_ui.all_searchfields()) self.assertEqual(content_field_name, 'text') self.assertEqual(len(mapping), 4) self.assertEqual(mapping, { 'text': {'index': 'analyzed', 'term_vector': 'with_positions_offsets', 'type': 'string', 'analyzer': 'snowball', 'boost': 1.0, 'store': 'yes'}, 'pub_date': {'index': 'analyzed', 'boost': 1.0, 'store': 'yes', 'type': 'date'}, 'name': {'index': 'analyzed', 'term_vector': 'with_positions_offsets', 'type': 'string', 'analyzer': 'snowball', 'boost': 1.0, 'store': 'yes'}, 'name_exact': {'index': 'not_analyzed', 'term_vector': 'with_positions_offsets', 'boost': 1.0, 'store': 'yes', 'type': 'string'} }) ui = UnifiedIndex() ui.build(indexes=[ElasticsearchComplexFacetsMockSearchIndex()]) (content_field_name, mapping) = self.sb.build_schema(ui.all_searchfields()) self.assertEqual(content_field_name, 'text') self.assertEqual(len(mapping), 15) self.assertEqual(mapping, { 'name': {'index': 'analyzed', 'term_vector': 'with_positions_offsets', 'type': 'string', 'analyzer': 'snowball', 'boost': 1.0, 'store': 'yes'}, 'is_active_exact': {'index': 'not_analyzed', 'boost': 1.0, 'store': 'yes', 'type': 'boolean'}, 'created': {'index': 'analyzed', 'boost': 1.0, 'store': 'yes', 'type': 'date'}, 'post_count': {'index': 'analyzed', 'boost': 1.0, 'store': 'yes', 'type': 'long'}, 'created_exact': {'index': 'not_analyzed', 'boost': 1.0, 'store': 'yes', 'type': 'date'}, 'sites_exact': {'index': 'not_analyzed', 'term_vector': 'with_positions_offsets', 'boost': 1.0, 'store': 'yes', 'type': 'string'}, 'is_active': {'index': 'analyzed', 'boost': 1.0, 'store': 'yes', 'type': 'boolean'}, 'sites': {'index': 'analyzed', 'term_vector': 'with_positions_offsets', 'type': 'string', 'analyzer': 'snowball', 'boost': 1.0, 'store': 'yes'}, 'post_count_i': {'index': 'not_analyzed', 'boost': 1.0, 'store': 'yes', 'type': 'long'}, 'average_rating': {'index': 'analyzed', 'boost': 1.0, 'store': 'yes', 'type': 'float'}, 'text': {'index': 'analyzed', 'term_vector': 'with_positions_offsets', 'type': 'string', 'analyzer': 'snowball', 'boost': 1.0, 'store': 'yes'}, 'pub_date_exact': {'index': 'not_analyzed', 'boost': 1.0, 'store': 'yes', 'type': 'date'}, 'name_exact': {'index': 'not_analyzed', 'term_vector': 'with_positions_offsets', 'boost': 1.0, 'store': 'yes', 'type': 'string'}, 'pub_date': {'index': 'analyzed', 'boost': 1.0, 'store': 'yes', 'type': 'date'}, 'average_rating_exact': {'index': 'not_analyzed', 'boost': 1.0, 'store': 'yes', 'type': 'float'} })
def test_build_schema(self): old_ui = connections['default'].get_unified_index() (content_field_name, mapping) = self.sb.build_schema(old_ui.all_searchfields()) self.assertEqual(content_field_name, 'text') self.assertEqual(len(mapping), 4) self.assertEqual(mapping, { 'text': {'index': 'analyzed', 'term_vector': 'with_positions_offsets', 'type': 'string', 'analyzer': 'snowball', 'boost': 1.0, 'store': 'yes'}, 'pub_date': {'index': 'analyzed', 'boost': 1.0, 'store': 'yes', 'type': 'date'}, 'name': {'index': 'analyzed', 'term_vector': 'with_positions_offsets', 'type': 'string', 'analyzer': 'snowball', 'boost': 1.0, 'store': 'yes'}, 'name_exact': {'index': 'not_analyzed', 'term_vector': 'with_positions_offsets', 'boost': 1.0, 'store': 'yes', 'type': 'string'} }) ui = UnifiedIndex() ui.build(indexes=[ElasticsearchComplexFacetsMockSearchIndex()]) (content_field_name, mapping) = self.sb.build_schema(ui.all_searchfields()) self.assertEqual(content_field_name, 'text') self.assertEqual(len(mapping), 15) self.assertEqual(mapping, { 'name': {'index': 'analyzed', 'term_vector': 'with_positions_offsets', 'type': 'string', 'analyzer': 'snowball', 'boost': 1.0, 'store': 'yes'}, 'is_active_exact': {'index': 'not_analyzed', 'boost': 1.0, 'store': 'yes', 'type': 'boolean'}, 'created': {'index': 'analyzed', 'boost': 1.0, 'store': 'yes', 'type': 'date'}, 'post_count': {'index': 'analyzed', 'boost': 1.0, 'store': 'yes', 'type': 'long'}, 'created_exact': {'index': 'not_analyzed', 'boost': 1.0, 'store': 'yes', 'type': 'date'}, 'sites_exact': {'index': 'not_analyzed', 'term_vector': 'with_positions_offsets', 'boost': 1.0, 'store': 'yes', 'type': 'string'}, 'is_active': {'index': 'analyzed', 'boost': 1.0, 'store': 'yes', 'type': 'boolean'}, 'sites': {'index': 'analyzed', 'term_vector': 'with_positions_offsets', 'type': 'string', 'analyzer': 'snowball', 'boost': 1.0, 'store': 'yes'}, 'post_count_i': {'index': 'not_analyzed', 'boost': 1.0, 'store': 'yes', 'type': 'long'}, 'average_rating': {'index': 'analyzed', 'boost': 1.0, 'store': 'yes', 'type': 'float'}, 'text': {'index': 'analyzed', 'term_vector': 'with_positions_offsets', 'type': 'string', 'analyzer': 'snowball', 'boost': 1.0, 'store': 'yes'}, 'pub_date_exact': {'index': 'not_analyzed', 'boost': 1.0, 'store': 'yes', 'type': 'date'}, 'name_exact': {'index': 'not_analyzed', 'term_vector': 'with_positions_offsets', 'boost': 1.0, 'store': 'yes', 'type': 'string'}, 'pub_date': {'index': 'analyzed', 'boost': 1.0, 'store': 'yes', 'type': 'date'}, 'average_rating_exact': {'index': 'not_analyzed', 'boost': 1.0, 'store': 'yes', 'type': 'float'} })
def test_build_schema(self): ui = UnifiedIndex() ui.build(indexes=[AllTypesWhooshMockSearchIndex()]) (content_field_name, schema) = self.sb.build_schema(ui.all_searchfields()) self.assertEqual(content_field_name, "text") schema_names = set(schema.names()) required_schema = { "django_ct", "django_id", "id", "is_active", "name", "pub_date", "seen_count", "sites", "text", } self.assertTrue(required_schema.issubset(schema_names)) self.assertIsInstance(schema._fields["text"], TEXT) self.assertIsInstance(schema._fields["pub_date"], DATETIME) self.assertIsInstance(schema._fields["seen_count"], NUMERIC) self.assertIsInstance(schema._fields["sites"], KEYWORD) self.assertIsInstance(schema._fields["is_active"], BOOLEAN)
def test_build_schema(self): ui = UnifiedIndex() ui.build(indexes=[AllTypesWhooshMockSearchIndex()]) (content_field_name, schema) = self.sb.build_schema(ui.all_searchfields()) self.assertEqual(content_field_name, 'text') self.assertEqual(len(schema.names()), 9) self.assertEqual(schema.names(), ['django_ct', 'django_id', 'id', 'is_active', 'name', 'pub_date', 'seen_count', 'sites', 'text']) self.assertTrue(isinstance(schema._fields['text'], TEXT)) self.assertTrue(isinstance(schema._fields['pub_date'], DATETIME)) self.assertTrue(isinstance(schema._fields['seen_count'], NUMERIC)) self.assertTrue(isinstance(schema._fields['sites'], KEYWORD)) self.assertTrue(isinstance(schema._fields['is_active'], BOOLEAN))
def test_build_schema(self): ui = UnifiedIndex() ui.build(indexes=[AllTypesWhooshMockSearchIndex()]) (content_field_name, schema) = self.sb.build_schema(ui.all_searchfields()) self.assertEqual(content_field_name, 'text') schema_names = set(schema.names()) required_schema = {'django_ct', 'django_id', 'id', 'is_active', 'name', 'pub_date', 'seen_count', 'sites', 'text'} self.assertTrue(required_schema.issubset(schema_names)) self.assertIsInstance(schema._fields['text'], TEXT) self.assertIsInstance(schema._fields['pub_date'], DATETIME) self.assertIsInstance(schema._fields['seen_count'], NUMERIC) self.assertIsInstance(schema._fields['sites'], KEYWORD) self.assertIsInstance(schema._fields['is_active'], BOOLEAN)
def test_build_schema(self): old_ui = connections['default'].get_unified_index() (content_field_name, fields) = self.sb.build_schema(old_ui.all_searchfields()) self.assertEqual(content_field_name, 'text') self.assertEqual(len(fields), 4) self.assertEqual(fields, [{ 'indexed': 'true', 'type': 'text_en', 'stored': 'true', 'field_name': 'text', 'multi_valued': 'false' }, { 'indexed': 'true', 'type': 'date', 'stored': 'true', 'field_name': 'pub_date', 'multi_valued': 'false' }, { 'indexed': 'true', 'type': 'text_en', 'stored': 'true', 'field_name': 'name', 'multi_valued': 'false' }, { 'indexed': 'true', 'field_name': 'name_exact', 'stored': 'true', 'type': 'string', 'multi_valued': 'false' }]) ui = UnifiedIndex() ui.build(indexes=[SolrComplexFacetsMockSearchIndex()]) (content_field_name, fields) = self.sb.build_schema(ui.all_searchfields()) self.assertEqual(content_field_name, 'text') self.assertEqual(len(fields), 15) fields = sorted(fields, key=lambda field: field['field_name']) self.assertEqual(fields, [{ 'field_name': 'average_rating', 'indexed': 'true', 'multi_valued': 'false', 'stored': 'true', 'type': 'float' }, { 'field_name': 'average_rating_exact', 'indexed': 'true', 'multi_valued': 'false', 'stored': 'true', 'type': 'float' }, { 'field_name': 'created', 'indexed': 'true', 'multi_valued': 'false', 'stored': 'true', 'type': 'date' }, { 'field_name': 'created_exact', 'indexed': 'true', 'multi_valued': 'false', 'stored': 'true', 'type': 'date' }, { 'field_name': 'is_active', 'indexed': 'true', 'multi_valued': 'false', 'stored': 'true', 'type': 'boolean' }, { 'field_name': 'is_active_exact', 'indexed': 'true', 'multi_valued': 'false', 'stored': 'true', 'type': 'boolean' }, { 'field_name': 'name', 'indexed': 'true', 'multi_valued': 'false', 'stored': 'true', 'type': 'text_en' }, { 'field_name': 'name_exact', 'indexed': 'true', 'multi_valued': 'false', 'stored': 'true', 'type': 'string' }, { 'field_name': 'post_count', 'indexed': 'true', 'multi_valued': 'false', 'stored': 'true', 'type': 'long' }, { 'field_name': 'post_count_i', 'indexed': 'true', 'multi_valued': 'false', 'stored': 'true', 'type': 'long' }, { 'field_name': 'pub_date', 'indexed': 'true', 'multi_valued': 'false', 'stored': 'true', 'type': 'date' }, { 'field_name': 'pub_date_exact', 'indexed': 'true', 'multi_valued': 'false', 'stored': 'true', 'type': 'date' }, { 'field_name': 'sites', 'indexed': 'true', 'multi_valued': 'true', 'stored': 'true', 'type': 'text_en' }, { 'field_name': 'sites_exact', 'indexed': 'true', 'multi_valued': 'true', 'stored': 'true', 'type': 'string' }, { 'field_name': 'text', 'indexed': 'true', 'multi_valued': 'false', 'stored': 'true', 'type': 'text_en' }])
def test_build_schema(self): old_ui = connections['default'].get_unified_index() (content_field_name, fields) = self.sb.build_schema(old_ui.all_searchfields()) self.assertEqual(content_field_name, 'text') self.assertEqual(len(fields), 4) self.assertEqual(fields, [ { 'indexed': 'true', 'type': 'text', 'stored': 'true', 'field_name': 'text', 'multi_valued': 'false' }, { 'indexed': 'true', 'type': 'date', 'stored': 'true', 'field_name': 'pub_date', 'multi_valued': 'false' }, { 'indexed': 'true', 'type': 'text', 'stored': 'true', 'field_name': 'name', 'multi_valued': 'false' }, { 'indexed': 'true', 'field_name': 'name_exact', 'stored': 'true', 'type': 'string', 'multi_valued': 'false' } ]) ui = UnifiedIndex() ui.build(indexes=[SolrComplexFacetsMockSearchIndex()]) (content_field_name, fields) = self.sb.build_schema(ui.all_searchfields()) self.assertEqual(content_field_name, 'text') self.assertEqual(len(fields), 15) fields = sorted(fields, key=lambda field: field['field_name']) self.assertEqual(fields, [ { 'field_name': 'average_rating', 'indexed': 'true', 'multi_valued': 'false', 'stored': 'true', 'type': 'sfloat' }, { 'field_name': 'average_rating_exact', 'indexed': 'true', 'multi_valued': 'false', 'stored': 'true', 'type': 'sfloat' }, { 'field_name': 'created', 'indexed': 'true', 'multi_valued': 'false', 'stored': 'true', 'type': 'date' }, { 'field_name': 'created_exact', 'indexed': 'true', 'multi_valued': 'false', 'stored': 'true', 'type': 'date' }, { 'field_name': 'is_active', 'indexed': 'true', 'multi_valued': 'false', 'stored': 'true', 'type': 'boolean' }, { 'field_name': 'is_active_exact', 'indexed': 'true', 'multi_valued': 'false', 'stored': 'true', 'type': 'boolean' }, { 'field_name': 'name', 'indexed': 'true', 'multi_valued': 'false', 'stored': 'true', 'type': 'text' }, { 'field_name': 'name_exact', 'indexed': 'true', 'multi_valued': 'false', 'stored': 'true', 'type': 'string' }, { 'field_name': 'post_count', 'indexed': 'true', 'multi_valued': 'false', 'stored': 'true', 'type': 'slong' }, { 'field_name': 'post_count_i', 'indexed': 'true', 'multi_valued': 'false', 'stored': 'true', 'type': 'slong' }, { 'field_name': 'pub_date', 'indexed': 'true', 'multi_valued': 'false', 'stored': 'true', 'type': 'date' }, { 'field_name': 'pub_date_exact', 'indexed': 'true', 'multi_valued': 'false', 'stored': 'true', 'type': 'date' }, { 'field_name': 'sites', 'indexed': 'true', 'multi_valued': 'true', 'stored': 'true', 'type': 'text' }, { 'field_name': 'sites_exact', 'indexed': 'true', 'multi_valued': 'true', 'stored': 'true', 'type': 'string' }, { 'field_name': 'text', 'indexed': 'true', 'multi_valued': 'false', 'stored': 'true', 'type': 'text' } ])
class LiveElasticsearchAutocompleteTestCase(TestCase): fixtures = ['bulk_data.json'] def setUp(self): super(LiveElasticsearchAutocompleteTestCase, self).setUp() # Stow. self.old_ui = connections['default'].get_unified_index() self.ui = UnifiedIndex() self.smmi = ElasticsearchAutocompleteMockModelSearchIndex() self.ui.build(indexes=[self.smmi]) connections['default']._index = self.ui self.sqs = SearchQuerySet() # Wipe it clean. clear_elasticsearch_index() # Reboot the schema. self.sb = connections['default'].get_backend() self.sb.setup() self.smmi.update() def tearDown(self): # Restore. connections['default']._index = self.old_ui super(LiveElasticsearchAutocompleteTestCase, self).tearDown() def test_build_schema(self): self.sb = connections['default'].get_backend() content_name, mapping = self.sb.build_schema(self.ui.all_searchfields()) self.assertEqual(mapping, { 'name_auto': { 'index': 'analyzed', 'term_vector': 'with_positions_offsets', 'type': 'string', 'analyzer': 'edgengram_analyzer', 'boost': 1.0, 'store': 'yes' }, 'text': { 'index': 'analyzed', 'term_vector': 'with_positions_offsets', 'type': 'string', 'analyzer': 'snowball', 'boost': 1.0, 'store': 'yes' }, 'pub_date': { 'index': 'analyzed', 'boost': 1.0, 'store': 'yes', 'type': 'date' }, 'name': { 'index': 'analyzed', 'term_vector': 'with_positions_offsets', 'type': 'string', 'analyzer': 'snowball', 'boost': 1.0, 'store': 'yes' }, 'text_auto': { 'index': 'analyzed', 'term_vector': 'with_positions_offsets', 'type': 'string', 'analyzer': 'edgengram_analyzer', 'boost': 1.0, 'store': 'yes' } }) def test_autocomplete(self): autocomplete = self.sqs.autocomplete(text_auto='mod') self.assertEqual(autocomplete.count(), 5) self.assertEqual([result.pk for result in autocomplete], [u'1', u'12', u'14', u'6', u'7']) self.assertTrue('mod' in autocomplete[0].text.lower()) self.assertTrue('mod' in autocomplete[1].text.lower()) self.assertTrue('mod' in autocomplete[2].text.lower()) self.assertTrue('mod' in autocomplete[3].text.lower()) self.assertTrue('mod' in autocomplete[4].text.lower()) self.assertEqual(len([result.pk for result in autocomplete]), 5) # Test multiple words. autocomplete_2 = self.sqs.autocomplete(text_auto='your mod') self.assertEqual(autocomplete_2.count(), 3) self.assertEqual([result.pk for result in autocomplete_2], ['1', '14', '6']) self.assertTrue('your' in autocomplete_2[0].text.lower()) self.assertTrue('mod' in autocomplete_2[0].text.lower()) self.assertTrue('your' in autocomplete_2[1].text.lower()) self.assertTrue('mod' in autocomplete_2[1].text.lower()) self.assertTrue('your' in autocomplete_2[2].text.lower()) self.assertTrue('mod' in autocomplete_2[2].text.lower()) self.assertEqual(len([result.pk for result in autocomplete_2]), 3) # Test multiple fields. autocomplete_3 = self.sqs.autocomplete(text_auto='Django', name_auto='dan') self.assertEqual(autocomplete_3.count(), 4) self.assertEqual([result.pk for result in autocomplete_3], ['12', '1', '14', '22']) self.assertEqual(len([result.pk for result in autocomplete_3]), 4)
class LiveElasticsearchAutocompleteTestCase(TestCase): fixtures = ['bulk_data.json'] def setUp(self): super(LiveElasticsearchAutocompleteTestCase, self).setUp() # Stow. self.old_ui = connections['default'].get_unified_index() self.ui = UnifiedIndex() self.smmi = ElasticsearchAutocompleteMockModelSearchIndex() self.ui.build(indexes=[self.smmi]) connections['default']._index = self.ui self.sqs = SearchQuerySet() # Wipe it clean. clear_elasticsearch_index() # Reboot the schema. self.sb = connections['default'].get_backend() self.sb.setup() self.smmi.update() def tearDown(self): # Restore. connections['default']._index = self.old_ui super(LiveElasticsearchAutocompleteTestCase, self).tearDown() def test_build_schema(self): self.sb = connections['default'].get_backend() content_name, mapping = self.sb.build_schema(self.ui.all_searchfields()) self.assertEqual(mapping, { 'name_auto': { 'index': 'analyzed', 'term_vector': 'with_positions_offsets', 'type': 'string', 'analyzer': 'edgengram_analyzer', 'boost': 1.0, 'store': 'yes' }, 'text': { 'index': 'analyzed', 'term_vector': 'with_positions_offsets', 'type': 'string', 'analyzer': 'snowball', 'boost': 1.0, 'store': 'yes' }, 'pub_date': { 'index': 'analyzed', 'boost': 1.0, 'store': 'yes', 'type': 'date' }, 'name': { 'index': 'analyzed', 'term_vector': 'with_positions_offsets', 'type': 'string', 'analyzer': 'snowball', 'boost': 1.0, 'store': 'yes' }, 'text_auto': { 'index': 'analyzed', 'term_vector': 'with_positions_offsets', 'type': 'string', 'analyzer': 'edgengram_analyzer', 'boost': 1.0, 'store': 'yes' } }) def test_autocomplete(self): autocomplete = self.sqs.autocomplete(text_auto='mod') self.assertEqual(autocomplete.count(), 5) self.assertEqual([result.pk for result in autocomplete], [u'1', u'12', u'14', u'6', u'7']) self.assertTrue('mod' in autocomplete[0].text.lower()) self.assertTrue('mod' in autocomplete[1].text.lower()) self.assertTrue('mod' in autocomplete[2].text.lower()) self.assertTrue('mod' in autocomplete[3].text.lower()) self.assertTrue('mod' in autocomplete[4].text.lower()) self.assertEqual(len([result.pk for result in autocomplete]), 5) # Test multiple words. autocomplete_2 = self.sqs.autocomplete(text_auto='your mod') self.assertEqual(autocomplete_2.count(), 3) self.assertEqual([result.pk for result in autocomplete_2], ['1', '14', '6']) self.assertTrue('your' in autocomplete_2[0].text.lower()) self.assertTrue('mod' in autocomplete_2[0].text.lower()) self.assertTrue('your' in autocomplete_2[1].text.lower()) self.assertTrue('mod' in autocomplete_2[1].text.lower()) self.assertTrue('your' in autocomplete_2[2].text.lower()) self.assertTrue('mod' in autocomplete_2[2].text.lower()) self.assertEqual(len([result.pk for result in autocomplete_2]), 3) # Test multiple fields. autocomplete_3 = self.sqs.autocomplete(text_auto='Django', name_auto='dan') self.assertEqual(autocomplete_3.count(), 4) self.assertEqual([result.pk for result in autocomplete_3], ['12', '1', '14', '22']) self.assertEqual(len([result.pk for result in autocomplete_3]), 4)