2015-02-04 3 views
2

я следующий код:Lucene: Как Lucene магазин поле с таким же именем

Document doc = new Document(); 
String description = "This is a description text"; 
Field descField = new StringField("description ", description , Field.Store.YES); 
doc.add(descField); 
doc.add(new TextField("location", "Berlin", Field.Store.YES)); 
doc.add(new TextField("location", "Munich", Field.Store.YES)); 
doc.add(new TextField("location", "Vienna", Field.Store.YES)); 
writer.addDocument(doc); 

Как поле «местоположение» физически хранится в Lucene? Отображается ли оно в одно поле (с внутренними смещениями) или есть фактически 3 поля с тем же именем, которые хранятся отдельно в инвертированном индексе?

На самом деле у меня есть это: возникают ли проблемы с производительностью (время работы/пространство) или другие проблемы, если я хочу динамически генерировать (например, из источника данных во время выполнения) эти поля местоположения по сравнению с их добавлением к единственное поле и, следовательно, сокращение количества полей всегда до двух (описание и местоположение)?

Если кто-то знает указатель или ответ прямо из головы, это будет оценено.

ответ

2

Он будет отображен в одно поле. Это:

doc.add(new TextField("location", "Berlin", Field.Store.YES)); 
doc.add(new TextField("location", "Munich", Field.Store.YES)); 
doc.add(new TextField("location", "Vienna", Field.Store.YES)); 

Очень так же, как:

doc.add(new TextField("location", "Berlin Munich Vienna", Field.Store.YES)); 

(Предполагая, что вы используете StandardAnalyzer)

Что вы выбираете не должны делать никакого заметного различия во время индекса, и никакой разницы с точки зрения которого результат поиска вы вернетесь.

Разница между ними находится в их сохраненном представлении. При добавлении их отдельно вы сможете вернуть сохраненный результат в массив, а не строку:

IndexableField[] locations = doc.getFields("location") 
for (IndexableField location : location) 
    //Do stuff 
+0

Не могли бы вы указать ресурсы/документы, подтверждающие ваш ответ? Я хотел бы погрузиться в это глубже. – Oliver

Смежные вопросы