code: func (ix *IndexWriter) flushPost() {
  	w, err := ioutil.TempFile("", "csearch-index")
  	if err != nil {
  		log.Fatal(err)
  	}
  	if ix.Verbose {
  		log.Printf("flush %d entries to %s", len(ix.post), w.Name())
  	}
  	sortPost(ix.post)
  
  	// Write the raw ix.post array to disk as is.
  	// This process is the one reading it back in, so byte order is not a concern.
  	data := (*[npost * 8]byte)(unsafe.Pointer(&ix.post[0]))[:len(ix.post)*8]
  	if n, err := w.Write(data); err != nil || n < len(data) {
  		if err != nil {
  			log.Fatal(err)
  		}
  		log.Fatalf("short write writing %s", w.Name())
  	}
  
  	ix.post = ix.post[:0]
  	w.Seek(0, 0)
  	ix.postFile = append(ix.postFile, w)
  }
docs: // flushPost writes ix.post to a new temporary file and
  // clears the slice.