title: Efficient positional query on small documents with Lucene
body: <p>I have a large dataset composed by billion of small documents (~200 char/doc).
  What is the most efficient way to execute a positional query and get only the best three documents?</p>
  
  <p>My idea is not to create a positional index and execute such a query on the whole dataset, but to build a positional index on the fly with the results of a simple boolean query and then execute the positional query to get the best three document that i need.</p>
  
  <p>So, instead of:
  billion of docs -> build a positinal index -> execute positional query -> get best three docs</p>
  
  <p>I would like to do the following:
  billion of docs -> build a normal index -> execute boolean query -> get the best 250 (high number) -> build with the result an in-ram positional index -> execute positional query -> get best three docs.</p>
  
  <p>I think that by doing so i will reduce search time by paying a small approximation.
  Is thare any other/better solution to do that?</p>