public void run(File subjectSortedInput, File indexOutput) {
		try {
			IndexWriter indexWriter = new IndexWriter(indexOutput);
			NQuadParser parserIn = new NQuadParser(subjectSortedInput);
			PrintStream out = new PrintStream(indexOutput);
			while (parserIn.hasNext()) {
				NQuad nq = parserIn.next();
				if ((nq.object.startsWith("\"")) && (nq.object.length()>2)) {
					String in = nq.object.substring(1,nq.object.length()-2);
					if (in.length()>0) {
						BreakIterator wordIterator = BreakIterator.getWordInstance(Locale.ENGLISH);
						wordIterator.setText(in);
						int wordBoundary = wordIterator.first();
						int wordPrev = wordBoundary;
						while (wordBoundary != BreakIterator.DONE) {
							wordPrev = wordBoundary;
							wordBoundary = wordIterator.next();
							if (wordBoundary != BreakIterator.DONE) {
								String word = this.prepWord(in.substring(wordPrev, wordBoundary));
								if (word.length() > 0) {
									TreeSet<String> terms = new TreeSet<String>();
									terms.add(word);
									indexWriter.addToIndex(nq.subject, terms);
								}
							}
						}
					}						
				}
			}
			out.close();
		} catch (IOException e) {
			e.printStackTrace();
		}
	}