Search in comments of specific content type I'm looking for a module that provides the possibility to filter/search in comments.

When there is content of the content type = Proposal you can comment on it. There's a good change that there will be 50 comments or more. Now I would like to have a search box beneath my content, above my comments that filter the comments when you search for a string.

I would also need to filter the comments for ex. between dates, by username, by number of votes, ... .

I've searched the internet but couldn't find anything that provides this functionality.

Has anybody ever needed this and which module you used or how did you approach this?

It's something like this I need:
For this you need to enable vote up/down and voting api module enabled
Then enable voting for 'Proposal' content type mentioned in the image



Now import the below code mentioned in views. 

$view = new view();
$view-&gt;name = 'proposal_comments';
$view-&gt;description = '';
$view-&gt;tag = 'default';
$view-&gt;base_table = 'comment';
$view-&gt;human_name = 'Proposal comments';
$view-&gt;core = 7;
$view-&gt;api_version = '3.0';
$view-&gt;disabled = FALSE; /* Edit this to true to make a default view disabled initially */

/* Display: Master */
$handler = $view-&gt;new_display('default', 'Master', 'default');
$handler-&gt;display-&gt;display_options['title'] = 'test comments';
$handler-&gt;display-&gt;display_options['use_ajax'] = TRUE;
$handler-&gt;display-&gt;display_options['use_more_always'] = FALSE;
$handler-&gt;display-&gt;display_options['link_display'] = 'custom_url';
$handler-&gt;display-&gt;display_options['access']['type'] = 'none';
$handler-&gt;display-&gt;display_options['cache']['type'] = 'none';
$handler-&gt;display-&gt;display_options['query']['type'] = 'views_query';
$handler-&gt;display-&gt;display_options['query']['options']['distinct'] = TRUE;
$handler-&gt;display-&gt;display_options['exposed_form']['type'] = 'basic';
$handler-&gt;display-&gt;display_options['pager']['type'] = 'full';
$handler-&gt;display-&gt;display_options['pager']['options']['items_per_page'] = '10';
$handler-&gt;display-&gt;display_options['style_plugin'] = 'default';
$handler-&gt;display-&gt;display_options['row_plugin'] = 'comment';
/* Relationship: Comment: Content */
$handler-&gt;display-&gt;display_options['relationships']['nid']['id'] = 'nid';
$handler-&gt;display-&gt;display_options['relationships']['nid']['table'] = 'comment';
$handler-&gt;display-&gt;display_options['relationships']['nid']['field'] = 'nid';
$handler-&gt;display-&gt;display_options['relationships']['nid']['required'] = TRUE;
/* Relationship: Comment: Votes */
$handler-&gt;display-&gt;display_options['relationships']['votingapi_vote']['id'] = 'votingapi_vote';
$handler-&gt;display-&gt;display_options['relationships']['votingapi_vote']['table'] = 'comment';
$handler-&gt;display-&gt;display_options['relationships']['votingapi_vote']['field'] = 'votingapi_vote';
$handler-&gt;display-&gt;display_options['relationships']['votingapi_vote']['votingapi'] = array(
  'value_type' =&gt; 'points',
  'tag' =&gt; '',
);
$handler-&gt;display-&gt;display_options['relationships']['votingapi_vote']['current_user'] = 0;
/* Relationship: Comment: Vote results */
$handler-&gt;display-&gt;display_options['relationships']['votingapi_cache']['id'] = 'votingapi_cache';
$handler-&gt;display-&gt;display_options['relationships']['votingapi_cache']['table'] = 'comment';
$handler-&gt;display-&gt;display_options['relationships']['votingapi_cache']['field'] = 'votingapi_cache';
$handler-&gt;display-&gt;display_options['relationships']['votingapi_cache']['votingapi'] = array(
  'value_type' =&gt; 'points',
  'tag' =&gt; '',
  'function' =&gt; '',
);
/* Field: Comment: Title */
$handler-&gt;display-&gt;display_options['fields']['subject']['id'] = 'subject';
$handler-&gt;display-&gt;display_options['fields']['subject']['table'] = 'comment';
$handler-&gt;display-&gt;display_options['fields']['subject']['field'] = 'subject';
$handler-&gt;display-&gt;display_options['fields']['subject']['label'] = '';
$handler-&gt;display-&gt;display_options['fields']['subject']['alter']['word_boundary'] = FALSE;
$handler-&gt;display-&gt;display_options['fields']['subject']['alter']['ellipsis'] = FALSE;
/* Field: Comment: Comment */
$handler-&gt;display-&gt;display_options['fields']['comment_body']['id'] = 'comment_body';
$handler-&gt;display-&gt;display_options['fields']['comment_body']['table'] = 'field_data_comment_body';
$handler-&gt;display-&gt;display_options['fields']['comment_body']['field'] = 'comment_body';
/* Sort criterion: Comment: Post date */
$handler-&gt;display-&gt;display_options['sorts']['created']['id'] = 'created';
$handler-&gt;display-&gt;display_options['sorts']['created']['table'] = 'comment';
$handler-&gt;display-&gt;display_options['sorts']['created']['field'] = 'created';
$handler-&gt;display-&gt;display_options['sorts']['created']['order'] = 'DESC';
/* Filter criterion: Comment: Author */
$handler-&gt;display-&gt;display_options['filters']['name']['id'] = 'name';
$handler-&gt;display-&gt;display_options['filters']['name']['table'] = 'comment';
$handler-&gt;display-&gt;display_options['filters']['name']['field'] = 'name';
$handler-&gt;display-&gt;display_options['filters']['name']['exposed'] = TRUE;
$handler-&gt;display-&gt;display_options['filters']['name']['expose']['operator_id'] = 'name_op';
$handler-&gt;display-&gt;display_options['filters']['name']['expose']['label'] = 'Author';
$handler-&gt;display-&gt;display_options['filters']['name']['expose']['operator'] = 'name_op';
$handler-&gt;display-&gt;display_options['filters']['name']['expose']['identifier'] = 'name';
$handler-&gt;display-&gt;display_options['filters']['name']['expose']['remember_roles'] = array(
  2 =&gt; '2',
  1 =&gt; 0,
  3 =&gt; 0,
);
/* Filter criterion: Comment: Comment (comment_body) */
$handler-&gt;display-&gt;display_options['filters']['comment_body_value']['id'] = 'comment_body_value';
$handler-&gt;display-&gt;display_options['filters']['comment_body_value']['table'] = 'field_data_comment_body';
$handler-&gt;display-&gt;display_options['filters']['comment_body_value']['field'] = 'comment_body_value';
$handler-&gt;display-&gt;display_options['filters']['comment_body_value']['operator'] = 'contains';
$handler-&gt;display-&gt;display_options['filters']['comment_body_value']['exposed'] = TRUE;
$handler-&gt;display-&gt;display_options['filters']['comment_body_value']['expose']['operator_id'] = 'comment_body_value_op';
$handler-&gt;display-&gt;display_options['filters']['comment_body_value']['expose']['label'] = 'Comment (comment_body)';
$handler-&gt;display-&gt;display_options['filters']['comment_body_value']['expose']['operator'] = 'comment_body_value_op';
$handler-&gt;display-&gt;display_options['filters']['comment_body_value']['expose']['identifier'] = 'comment_body_value';
$handler-&gt;display-&gt;display_options['filters']['comment_body_value']['expose']['remember_roles'] = array(
  2 =&gt; '2',
  1 =&gt; 0,
  3 =&gt; 0,
);
/* Filter criterion: Comment: Post date */
$handler-&gt;display-&gt;display_options['filters']['created']['id'] = 'created';
$handler-&gt;display-&gt;display_options['filters']['created']['table'] = 'comment';
$handler-&gt;display-&gt;display_options['filters']['created']['field'] = 'created';
$handler-&gt;display-&gt;display_options['filters']['created']['exposed'] = TRUE;
$handler-&gt;display-&gt;display_options['filters']['created']['expose']['operator_id'] = 'created_op';
$handler-&gt;display-&gt;display_options['filters']['created']['expose']['label'] = 'Post date';
$handler-&gt;display-&gt;display_options['filters']['created']['expose']['operator'] = 'created_op';
$handler-&gt;display-&gt;display_options['filters']['created']['expose']['identifier'] = 'created';
$handler-&gt;display-&gt;display_options['filters']['created']['expose']['remember_roles'] = array(
  2 =&gt; '2',
  1 =&gt; 0,
  3 =&gt; 0,
);
/* Filter criterion: Votes: Value */
$handler-&gt;display-&gt;display_options['filters']['value']['id'] = 'value';
$handler-&gt;display-&gt;display_options['filters']['value']['table'] = 'votingapi_vote';
$handler-&gt;display-&gt;display_options['filters']['value']['field'] = 'value';
$handler-&gt;display-&gt;display_options['filters']['value']['relationship'] = 'votingapi_vote';
$handler-&gt;display-&gt;display_options['filters']['value']['exposed'] = TRUE;
$handler-&gt;display-&gt;display_options['filters']['value']['expose']['operator_id'] = 'value_op';
$handler-&gt;display-&gt;display_options['filters']['value']['expose']['label'] = 'Value';
$handler-&gt;display-&gt;display_options['filters']['value']['expose']['operator'] = 'value_op';
$handler-&gt;display-&gt;display_options['filters']['value']['expose']['identifier'] = 'vote';
$handler-&gt;display-&gt;display_options['filters']['value']['expose']['remember_roles'] = array(
  2 =&gt; '2',
  1 =&gt; 0,
  3 =&gt; 0,
);

/* Display: Page */
$handler = $view-&gt;new_display('page', 'Page', 'page');
$handler-&gt;display-&gt;display_options['path'] = 'test-comments';

/* Display: Block */
$handler = $view-&gt;new_display('block', 'Block', 'block_1');
$handler-&gt;display-&gt;display_options['link_url'] = 'demo';


It will create a block in the admin/structure/block mentioned 
 in the below image. Assign it to 'Proposal' content type.


It will be displayed under proposal node view page this way



Hope it will help you.