Uploaded image for project: 'Lucene - Core'
  1. Lucene - Core
  2. LUCENE-1622

Multi-word synonym filter (synonym expansion at indexing time).

    XMLWordPrintableJSON

Details

    • New Feature
    • Status: Resolved
    • Minor
    • Resolution: Duplicate
    • None
    • None
    • modules/analysis
    • None

    Description

      It would be useful to have a filter that provides support for indexing-time synonym expansion, especially for multi-word synonyms (with multi-word matching for original tokens).

      The problem is not trivial, as observed on the mailing list. The problems I was able to identify (mentioned in the unit tests as well):

      • if multi-word synonyms are indexed together with the original token stream (at overlapping positions), then a query for a partial synonym sequence (e.g., "big" in the synonym "big apple" for "new york city") causes the document to match;
      • there are problems with highlighting the original document when synonym is matched (see unit tests for an example),
      • if the synonym is of different length than the original sequence of tokens to be matched, then phrase queries spanning the synonym and the original sequence boundary won't be found. Example "big apple" synonym for "new york city". A phrase query "big apple restaurants" won't match "new york city restaurants".

      I am posting the patch that implements phrase synonyms as a token filter. This is not necessarily intended for immediate inclusion, but may provide a basis for many people to experiment and adjust to their own scenarios.

      Attachments

        1. synonyms.patch
          25 kB
          Dawid Weiss

        Issue Links

          Activity

            People

              Unassigned Unassigned
              dawidweiss Dawid Weiss
              Votes:
              10 Vote for this issue
              Watchers:
              17 Start watching this issue

              Dates

                Created:
                Updated:
                Resolved: