diff --git a/tests/search_api_test.install b/tests/search_api_test.install
index f06f37d..8dea6eb 100644
--- a/tests/search_api_test.install
+++ b/tests/search_api_test.install
@@ -22,7 +22,7 @@ function search_api_test_schema() {
         'description' => 'The title of the item.',
         'type' => 'varchar',
         'length' => 50,
-        'not null' => TRUE,
+        'not null' => FALSE,
       ),
       'body' => array(
         'description' => 'A text belonging to the item.',
@@ -33,7 +33,13 @@ function search_api_test_schema() {
         'description' => 'A string identifying the type of item.',
         'type' => 'varchar',
         'length' => 50,
-        'not null' => TRUE,
+        'not null' => FALSE,
+      ),
+      'keywords' => array(
+        'description' => 'A comma separated list of keywords.',
+        'type' => 'varchar',
+        'length' => 200,
+       'not null' => FALSE,
       ),
     ),
     'primary key' => array('id'),
diff --git a/tests/search_api_test.module b/tests/search_api_test.module
index 618e4f1..67e3392 100644
--- a/tests/search_api_test.module
+++ b/tests/search_api_test.module
@@ -43,6 +43,9 @@ function search_api_test_insert_item(array $form, array &$form_state) {
     'type' => array(
       '#type' => 'textfield',
     ),
+    'keywords' => array(
+      '#type' => 'textfield',
+    ),
     'submit' => array(
       '#type' => 'submit',
       '#value' => t('Save'),
@@ -55,7 +58,7 @@ function search_api_test_insert_item(array $form, array &$form_state) {
  */
 function search_api_test_insert_item_submit(array $form, array &$form_state) {
   form_state_values_clean($form_state);
-  db_insert('search_api_test')->fields($form_state['values'])->execute();
+  db_insert('search_api_test')->fields(array_filter($form_state['values']))->execute();
   module_invoke_all('entity_insert', search_api_test_load($form_state['values']['id']), 'search_api_test');
 }
 
@@ -78,24 +81,6 @@ function search_api_test_view($entity) {
  * Menu callback for executing a search.
  */
 function search_api_test_query(SearchApiIndex $index, $keys = 'foo bar', $offset = 0, $limit = 10, $fields = NULL, $sort = NULL, $filters = NULL) {
-  // Slight "hack" for testing complex queries.
-  if ($keys == '|COMPLEX|') {
-    $keys = array(
-      '#conjunction' => 'AND',
-      'test',
-      array(
-        '#conjunction' => 'OR',
-        'baz',
-        'foobar',
-      ),
-      array(
-        '#conjunction' => 'OR',
-        '#negation' => TRUE,
-        'bar',
-        'fooblob',
-      ),
-    );
-  }
   $query = $index->query()
     ->keys($keys ? $keys : NULL)
     ->range($offset, $limit);
@@ -178,6 +163,12 @@ function search_api_test_entity_property_info() {
       'description' => "The item's parent.",
       'getter callback' => 'search_api_test_parent',
     ),
+    'keywords' => array(
+      'label' => 'Keywords',
+      'type' => 'list<string>',
+      'description' => 'An optional collection of keywords describing the item.',
+      'getter callback' => 'search_api_test_list_callback',
+    ),
   );
 
   return $info;
@@ -200,6 +191,20 @@ function search_api_test_parent($entity) {
 }
 
 /**
+ * List callback.
+ */
+function search_api_test_list_callback($data) {
+  //return is_array($entity->keywords) ? $entity->keywords : explode(',', $entity->keywords);
+  if (is_array($data)) {
+    $res = is_array($data['keywords']) ? $data['keywords'] : explode(',', $data['keywords']);
+  }
+  else {
+    $res = is_array($data->keywords) ? $data->keywords : explode(',', $data->keywords);
+  }
+  return array_filter($res);
+}
+
+/**
  * Implements hook_search_api_service_info().
  */
 function search_api_test_search_api_service_info() {
