diff --git apachesolr.admin.inc apachesolr.admin.inc
index 4cee612..e09f6f5 100644
--- apachesolr.admin.inc
+++ apachesolr.admin.inc
@@ -260,12 +260,10 @@ function apachesolr_settings($form, &$form_state) {
     '#description' => t('The maximum number of items indexed in each pass of a <a href="@cron">cron maintenance task</a>. If necessary, reduce the number of items to prevent timeouts and memory errors while indexing.', array('@cron' => url('admin/reports/status')))
   );
 
-  $options = drupal_map_assoc(array(5, 10, 15, 20, 25, 30, 40, 50, 60, 70, 80, 90, 100));
   $form['apachesolr_rows'] = array(
-    '#type' => 'select',
+    '#type' => 'textfield',
     '#title' => t('Results per page'),
     '#default_value' => variable_get('apachesolr_rows', 10),
-    '#options' => $options,
     '#description' => t('The number of results that will be shown per page.'),
   );
   $form['apachesolr_facetstyle'] = array(
@@ -307,6 +305,12 @@ function apachesolr_settings($form, &$form_state) {
   return system_settings_form($form);
 }
 
+function apachesolr_settings_validate($form, &$form_state) {
+  if (!is_numeric($form_state['values']['apachesolr_rows'])) {
+    form_set_error('apachesolr_rows', t('Results per page should be numeric.'));
+  }
+}
+
 /**
  * Gets information about the fields already in solr index.
  */
