code: def lunr(ref, fields, documents, languages=None):
      if languages is not None and lang.LANGUAGE_SUPPORT:
          if isinstance(languages, basestring):
              languages = [languages]
          unsupported_languages = set(languages) - set(lang.SUPPORTED_LANGUAGES)
          if unsupported_languages:
              raise RuntimeError(
                  "The specified languages {} are not supported, "
                  "please choose one of {}".format(
                      ", ".join(unsupported_languages),
                      ", ".join(lang.SUPPORTED_LANGUAGES.keys()),
                  )
              )
          builder = lang.get_nltk_builder(languages)
      else:
          builder = Builder()
          builder.pipeline.add(trimmer, stop_word_filter, stemmer)
          builder.search_pipeline.add(stemmer)
      builder.ref(ref)
      for field in fields:
          if isinstance(field, dict):
              builder.field(**field)
          else:
              builder.field(field)
      for document in documents:
          if isinstance(document, (tuple, list)):
              builder.add(document[0], attributes=document[1])
          else:
              builder.add(document)
      return builder.build()