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

CommonGramsFilter improvements

Details

    • Improvement
    • Status: Open
    • Minor
    • Resolution: Unresolved
    • 3.1, 4.0-ALPHA
    • 4.9, 6.0
    • modules/analysis
    • None
    • New

    Description

      Currently CommonGramsFilter expects users to remove the common words around which output token ngrams are formed, by appending a StopFilter to the analysis pipeline. This is inefficient in two ways: captureState() is called on (trailing) stopwords, and then the whole stream has to be re-examined by the following StopFilter.

      The current ctor should be deprecated, and another ctor added with a boolean option controlling whether the common words should be output as unigrams.

      If common words are configured to be output as unigrams, captureState() will still need to be called, as it is now.

      If the common words are not configured to be output as unigrams, rather than calling captureState() for the trailing token in each output token ngram, the term text, position and offset can be maintained in the same way as they are now for the leading token: using a System.arrayCopy()'d term buffer and a few ints for positionIncrement and offsetd. The user then no longer would need to append a StopFilter to the analysis chain.

      An example illustrating both possibilities should also be added.

      Attachments

        1. commit-6402a55.patch
          23 kB
          Itamar Syn-Hershko

        Activity

          People

            Unassigned Unassigned
            sarowe Steven Rowe
            Votes:
            2 Vote for this issue
            Watchers:
            4 Start watching this issue

            Dates

              Created:
              Updated: