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

Better nearest-neighbor queries

    XMLWordPrintableJSON

Details

    • Improvement
    • Status: Resolved
    • Minor
    • Resolution: Won't Fix
    • None
    • None
    • None
    • None
    • New

    Description

      LatLonPoint.nearest is very efficient at identifying the top-k documents sorted by distance from a given point, by working directly on the BKD tree. This doesn't support filtering though, so if you need to filter by another property, you need to switch to querying on the filter and sorting by a LatLonPointSortField. Unfortunately this requires visiting all documents that match the filter.

      We could leverage the new setMinCompetitiveScore API introduced in LUCENE-4100 in order to allow for retrieval of nearest neighbors with arbitrary filters, by recomputing a bounding-box when a new minimum competitive score is set.

      In the future we could also leverage this to speed up queries that are boosted by distance. For instance if the final score is a weighted sum of the score on a text field and a distance-based score, and the minimum competitive score gets higher than the maximum score that may be produced on the text field at some point, then we could dynamically prune hits based on the distance.

      Attachments

        1. LUCENE-8091.patch
          15 kB
          Adrien Grand

        Issue Links

          Activity

            People

              Unassigned Unassigned
              jpountz Adrien Grand
              Votes:
              0 Vote for this issue
              Watchers:
              3 Start watching this issue

              Dates

                Created:
                Updated:
                Resolved: