Project

General

Profile

Actions

Feature #35764

closed

Multiple search terms in the "contains" operator of text filters

Added by Go MAEDA over 2 years ago. Updated over 2 years ago.

Status:
Closed
Priority:
Normal
Category:
Filters
Target version:
Start date:
Due date:
% Done:

0%

Estimated time:
Resolution:
Fixed

Description

I extracted the attached patch from #35073#note-4. The patch posted by Jens Krämer from Planio allows you to use multiple search terms in "contains" operator of text filters.

The alternative I am experimenting with right now is breaking up the user's query string into tokens like the global search does, and use these to build a query with multiple LIKE clauses that are combined with AND. I'm attaching a preliminary patch that implements this for the Issue.like scope (used by the autocompleter) and the Query#sql_contains method (which should cover all query filters). Do you think that's a viable approach?

It seems that the patch has already been deployed to the production environment of Planio. See Planio filters just got more powerful - Planio Support (english) - Planio Support


Files


Related issues

Has duplicate Redmine - Feature #33286: Multiple search terms in "Subject" filterClosed

Actions
Blocked by Redmine - Feature #35073: Escape values in LIKE statements to prevent injection of placeholders (_ or %)ClosedMarius BĂLTEANU

Actions
Actions #1

Updated by Go MAEDA over 2 years ago

  • Blocked by Feature #35073: Escape values in LIKE statements to prevent injection of placeholders (_ or %) added
Actions #2

Updated by Marius BĂLTEANU over 2 years ago

  • Target version set to 5.0.0
Actions #3

Updated by Marius BĂLTEANU over 2 years ago

  • Assignee set to Marius BĂLTEANU
Actions #4

Updated by Marius BĂLTEANU over 2 years ago

  • Resolution set to Fixed

Patch committed with tests, thanks for this nice improvement.

The patch introduces the following offense:

Lint/IneffectiveAccessModifier: private (on line 1074) does not make singleton methods private. Use private_class_method or private inside a class << self block instead.
  def self.tokenized_like_conditions(db_field, value, **options)
Actions #5

Updated by Marius BĂLTEANU over 2 years ago

  • Status changed from New to Resolved

I've disabled for now the rubocop offense for Lint/IneffectiveAccessModifier. Jens, the method self.tokenized_like_conditions should not be public instead of private?

Actions #6

Updated by Marius BĂLTEANU over 2 years ago

  • Status changed from Resolved to Closed
Actions #7

Updated by Go MAEDA 11 months ago

  • Has duplicate Feature #33286: Multiple search terms in "Subject" filter added
Actions

Also available in: Atom PDF