Enabling International Search in Maximo

Maximo supports multiple languages and that allows organizations from many countries to use it. By default, however, non-English users will often encounter a problem when searching and filtering because the system will distinguish all characters in such a way that the correct results will only appear if the spelling is exactly the same as the system expects. This is a problem because we are all used to search engines such as Google or Bing which will return the correct answer.

Let’s say we are looking for a person named Lluís. Most people would simply type Lluis, but that would not yield the right result. For a Catalan-speaking user who is familiar with the spelling of the name and has a keyboard ready for this type of diacritics, it would be easy enough to fix the spelling, but what if the user looking for his person record lives in the US and doesn’t speak Catalan? In this case the search functionality will be unable to find the right record.

In order to resolve this we’ll need to make some changes to the database itself. In the following example we will enable international (diacritics-insensitive) search for the location description (LOCATION.DESCRIPTION) field:

  1. First we drop the existing location description index:
    DROP INDEX LOCATIONSDES_TIDX;
  2. Next we create a new Oracle lexer with base letters, which reduces letters like á and é to a, e respectively:
    begin
    ctxsys.ctx_ddl.create_preference ('LocDsc_lexer','BASIC_LEXER');
    ctxsys.ctx_ddl.set_attribute ('LocDsc_lexer','base_letter','YES');
    end;
  3. And finally we create an index similar to the one we dropped, but using our new lexer:
    CREATE INDEX LOCATIONSDES_TIDX ON LOCATIONS(DESCRIPTION) INDEXTYPE IS CTXSYS.CONTEXT parameters ('LEXER LocDsc_lexer language column LANGCODE SYNC (ON COMMIT)') NOPARALLEL;

Doing this in a few fields will usually be more than enough in most organizations, but check with your database administrators if you need a more complex solution.