Литература Введение Lucene Обзор


Сортировка результатов поиска


Download 219.91 Kb.
bet13/13
Sana19.04.2023
Hajmi219.91 Kb.
#1363803
TuriЛитература
1   ...   5   6   7   8   9   10   11   12   13
Bog'liq
1 sam top

7. Сортировка результатов поиска


Мы также можем отсортировать документы результатов поиска по определенным полям:
@Test
public void givenSortFieldWhenSortedThenCorrect() {
InMemoryLuceneIndex inMemoryLuceneIndex
= new InMemoryLuceneIndex(new RAMDirectory(), new StandardAnalyzer());
inMemoryLuceneIndex.indexDocument("Ganges", "River in India");
inMemoryLuceneIndex.indexDocument("Mekong", "This river flows in south Asia");
inMemoryLuceneIndex.indexDocument("Amazon", "Rain forest river");
inMemoryLuceneIndex.indexDocument("Rhine", "Belongs to Europe");
inMemoryLuceneIndex.indexDocument("Nile", "Longest River");


Term term = new Term("body", "river");
Query query = new WildcardQuery(term);


SortField sortField
= new SortField("title", SortField.Type.STRING_VAL, false);
Sort sortByTitle = new Sort(sortField);


List documents
= inMemoryLuceneIndex.searchIndex(query, sortByTitle);
assertEquals(4, documents.size());
assertEquals("Amazon", documents.get(0).getField("title").stringValue());
}
Мы попытались отсортировать выбранные документы по полям заголовка, которые являются названиями рек. Логический аргумент конструктораSortField предназначен для изменения порядка сортировки на обратный.

8. Удалить документы из индекса


Давайте попробуем удалить некоторые документы из индекса на основе заданногоTerm:
// ...
IndexWriterConfig indexWriterConfig = new IndexWriterConfig(analyzer);
IndexWriter writer = new IndexWriter(memoryIndex, indexWriterConfig);
writer.deleteDocuments(term);
// ...
Мы проверим это:
@Test
public void whenDocumentDeletedThenCorrect() {
InMemoryLuceneIndex inMemoryLuceneIndex
= new InMemoryLuceneIndex(new RAMDirectory(), new StandardAnalyzer());
inMemoryLuceneIndex.indexDocument("Ganges", "River in India");
inMemoryLuceneIndex.indexDocument("Mekong", "This river flows in south Asia");


Term term = new Term("title", "ganges");
inMemoryLuceneIndex.deleteDocument(term);


Query query = new TermQuery(term);


List documents = inMemoryLuceneIndex.searchIndex(query);
assertEquals(0, documents.size());
}

9. Заключение


Эта статья была кратким введением в работу с Apache Lucene. Также мы выполняли различные запросы и сортировали найденные документы.
Download 219.91 Kb.

Do'stlaringiz bilan baham:
1   ...   5   6   7   8   9   10   11   12   13




Ma'lumotlar bazasi mualliflik huquqi bilan himoyalangan ©fayllar.org 2024
ma'muriyatiga murojaat qiling