gpt4 book ai didi

java - hibernate 搜索错误

转载 作者:行者123 更新时间:2023-11-29 09:23:09 26 4
gpt4 key购买 nike

有人可以帮忙吗,我正在尝试一个简单的 hibernate 搜索示例,但出现以下错误:

Exception in thread "main" org.hibernate.HibernateException: could not init listeners
at org.hibernate.event.EventListeners.initializeListeners(EventListeners.java:205)
at org.hibernate.cfg.Configuration.getInitializedEventListeners(Configuration.java:1396)
at org.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:1385)
at FirstExample.main(FirstExample.java:32)
Caused by: java.lang.NullPointerException
at java.io.Reader.<init>(Reader.java:61)
at java.io.InputStreamReader.<init>(InputStreamReader.java:55)
at org.hibernate.search.util.HibernateSearchResourceLoader.getLines(HibernateSearchResourceLoader.java:52)
at org.apache.solr.analysis.StopFilterFactory.inform(StopFilterFactory.java:53)
at org.hibernate.search.impl.SolrAnalyzerBuilder.buildAnalyzer(SolrAnalyzerBuilder.java:79)
at org.hibernate.search.impl.InitContext.buildAnalyzer(InitContext.java:185)
at org.hibernate.search.impl.InitContext.initLazyAnalyzers(InitContext.java:155)
at org.hibernate.search.impl.SearchFactoryImpl.initDocumentBuilders(SearchFactoryImpl.java:541)
at org.hibernate.search.impl.SearchFactoryImpl.<init>(SearchFactoryImpl.java:171)
at org.hibernate.search.event.ContextHolder.getOrBuildSearchFactory(ContextHolder.java:60)
at org.hibernate.search.event.FullTextIndexEventListener.initialize(FullTextIndexEventListener.java:122)
at org.hibernate.event.EventListeners$1.processListener(EventListeners.java:198)
at org.hibernate.event.EventListeners.processListeners(EventListeners.java:181)
at org.hibernate.event.EventListeners.initializeListeners(EventListeners.java:194)
... 3 more

我的项目类别:

@Indexed 
@AnalyzerDef(name="customanalyzer",
tokenizer = @TokenizerDef(factory = StandardTokenizerFactory.class),
filters = {
@TokenFilterDef(factory = ISOLatin1AccentFilterFactory.class),
@TokenFilterDef(factory = LowerCaseFilterFactory.class),
@TokenFilterDef(factory = StopFilterFactory.class, params = {
@Parameter(name="words", value= "org/hibernate/search/test/analyzer/solr/stoplist.properties" ),
@Parameter(name="ignoreCase", value="true")
})
})


public class Item
{
@DocumentId
private Integer id;

@Field @Analyzer(definition = "customanalyzer")
private String title;

@Field @Analyzer(definition = "customanalyzer")
private String description;

@Field(index=Index.UN_TOKENIZED, store=Store.YES)
private String ean;

private String imageURL;
//public getters and setters
}

程序代码:

Session session = null;
Transaction tx = null;

SessionFactory sessionFactory = new Configuration().configure().buildSessionFactory();
session =sessionFactory.openSession();
FullTextSession ftem = org.hibernate.search.Search.getFullTextSession(session);

ftem.beginTransaction();
List <Item> AllItem=session.createQuery("From Item").list();

for (Item item : AllItem) {
ftem.index(item);
}
ftem.getTransaction().commit();



String searchQuery = "title:Batman";

QueryParser parser = new QueryParser(
"title",
ftem.getSearchFactory().getAnalyzer("customanalyzer")
);
org.apache.lucene.search.Query luceneQuery;
try {
luceneQuery = parser.parse(searchQuery);
}
catch (ParseException e) {
throw new RuntimeException("Unable to parse query: " + searchQuery, e);
}

org.hibernate.Query query = ftem.createFullTextQuery(
luceneQuery,
Item.class);
query.setFirstResult(20).setMaxResults(20);
List results = query.list();

最佳答案

看起来 Hibernate Search 在类路径中找不到 org/hibernate/search/test/analyzer/solr/stoplist.properties。确保它在那里。

关于java - hibernate 搜索错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4906202/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com