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

FieldCache.getStringIndex should not throw exception if term count exceeds doc count

Details

    • Bug
    • Status: Closed
    • Minor
    • Resolution: Fixed
    • None
    • 2.9.4, 3.0.3, 3.1, 4.0-ALPHA
    • core/search
    • None
    • New

    Description

      Spinoff of LUCENE-2133/LUCENE-831.

      Currently FieldCache cannot handle more than one value per field.
      We may someday want to fix that... but until that day:

      FieldCache.getStringIndex currently does a simplistic check to try to
      catch when you've accidentally allowed more than one term per field,
      by testing if the number of unique terms exceeds the number of
      documents.

      The problem is, this is not a perfect check, in that it allows false
      negatives (you could have more than one term per field for some docs
      and the check won't catch you).

      Further, the exception thrown is the unchecked RuntimeException.

      So this means... you could happily think all is good, until some day,
      well into production, once you've updated enough docs, suddenly the
      check will catch you and throw an unhandled exception, stopping all
      searches [that need to sort by this string field] in their tracks.
      It's not gracefully degrading.

      I think we should simply remove the test, ie, if you have more terms
      than docs then the terms simply overwrite one another.

      Attachments

        1. LUCENE-2142-fix-3x.patch
          2 kB
          Uwe Schindler
        2. LUCENE-2142-fix-trunk.patch
          1 kB
          Uwe Schindler
        3. LUCENE-2142-trunk.patch
          3 kB
          Michael McCandless

        Issue Links

          Activity

            People

              mikemccand Michael McCandless
              mikemccand Michael McCandless
              Votes:
              0 Vote for this issue
              Watchers:
              0 Start watching this issue

              Dates

                Created:
                Updated:
                Resolved: