【发布时间】:2021-07-28 07:07:05
【问题描述】:
我正在尝试实现 lucene 搜索。我将回购构建如下 公共类 CustomizedContentItemRepositoryImpl 实现 CustomizedContentItemRepository {
@PersistenceContext
private EntityManager entityManager;
@Override
public List<ContentItem> librarySearch(String searchText) {
SearchResult<ContentItem> result = Search.session(entityManager).search(ContentItem.class)
.where(f -> f.match()
.fields("description", "title", "creator.firstName", "creator.lastName")
.matching(searchText))
.fetchAll();
List<ContentItem> contentItems = result.hits();
return contentItems;
}
还有作为流动的服务Impl:
public List<ContentItem> searchContentItems(String searchText) {
return contentItemRepository.librarySearch(searchText);
}
当我测试它时,我总是得到一个空值
这是一个测试代码 @测试 void searchContentItems() 抛出 InterruptedException { ContentItem video1 = createContentItem(ContentType.VIDEO); contentItemRepository.save(video1);
ContentItem video2 = createContentItem(ContentType.VIDEO, 1000);
video2.getSubjects().clear();
contentItemRepository.save(video2);
ContentItem audio = createContentItem(ContentType.AUDIO);
contentItemRepository.save(audio);
assertEquals(3, contentItemRepository.findAll().size());
Search.session(entityManager)
.massIndexer(ContentItem.class)
.startAndWait();
Collection<ContentItem> videos = contentItemService.searchContentItems("type");
assertEquals(2, videos.size());
Iterator<ContentItem> iterator = videos.iterator();
assertEquals(video2.getId(), iterator.next().getId());
assertEquals(video1.getId(), iterator.next().getId());
}
【问题讨论】:
标签: java lucene hibernate-search