Не могу понять, где я был не прав.
Мой код, где "/ home / test / 03m8894 --- 20070213134234.txt" - файл с английским текстом, а "/ home / test / 01 --- 20061121103506.txt" - файл с русским текстом.
Оба файла закодированы в UTF-8.
Результат выполнения программы:
1
0
Т.е. программа находит только текст на английском, а русский текст игнорируется.
Хотя, если вы делаете
for (int m = 0; m <totalDocs; m + +) {
Document thisDoc = reader.document (m);
System.out.print (thisDoc.get ("partnum"));
текстовое поле partnum правильно, нет ошибок в выходной кодировке на экране.
RAMDirectory directory = new RAMDirectory();
IndexWriter writer =
//new IndexWriter(directory, new SimpleAnalyzer(), true, IndexWriter.MaxFieldLength.UNLIMITED);
new IndexWriter(directory, new RussianAnalyzer(Version.LUCENE_30), true, IndexWriter.MaxFieldLength.UNLIMITED);
File f1[] = {new File("/home/test/03m8894---20070213134234.txt"), new File("/home/test/01---20061121103506.txt")};
String strLine1 = "";
for (int x = 0; x < f1.length; x++) {
Document doc = new Document();
int length = (int) f1[x].length();
if (length != 0) {
char[] cbuf = new char[length];
InputStreamReader isr = new InputStreamReader(new FileInputStream(f1[x]));
final int read = isr.read(cbuf);
strLine1 = new String(cbuf, 0, read);
isr.close();
doc.add(new Field("partnum", strLine1, Field.Store.YES, Field.Index.NOT_ANALYZED));
//doc.add(new Field("description", "Illidium Space Modulator", Field.Store.YES, Field.Index.ANALYZED));
writer.addDocument(doc);
}
}
writer.close();
IndexSearcher searcher = new IndexSearcher(directory);
IndexReader reader = searcher.getIndexReader();
int totalDocs = reader.numDocs();
for (int m = 0; m < totalDocs; m++) {
Document thisDoc = reader.document(m);
String tmp_str=thisDoc.get("partnum");
Query query = new TermQuery(new Term("partnum", tmp_str));
TopDocs rs = searcher.search(query, null, 10);
System.out.println(rs.totalHits);