Я построил пример проекта для поиска в спящем режиме, и он отлично работает без каких-либо исключений, но когда я ищу строку, у которой есть некоторые объекты с этой строкой, она возвращает пустое. Я не знаю, что мне делать !!! Может кто-нибудь помочь мне ... Проект основан на maven, и я использую аннотацию спящего режима как для спящего режима, так и для спящего режима. Вот мой hibernate.cfg.xml файл:Hibernate Search Не вернет правильные результаты
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE hibernate-configuration PUBLIC "-//Hibernate/Hibernate Configuration DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">
<hibernate-configuration>
<session-factory>
<property name="hibernate.connection.driver_class">com.mysql.jdbc.Driver</property>
<property name="hibernate.connection.url">
jdbc:mysql://localhost:3306/eprnews
</property>
<property name="hibernate.connection.username">root</property>
<property name="hibernate.connection.password">***</property>
<property name="hibernate.dialect">org.hibernate.dialect.MySQLDialect</property>
<property name="hibernate.show_sql">true</property>
<property name="hibernate.bytecode.use_reflection_optimizer">false</property>
<!--
<property name="hibernate.hbm2ddl.auto">create-drop</property>
Hibernate Search -->
<!-- org.hibernate.search.store.FSDirectoryProvider -->
<!-- org.hibernate.search.store.RAMDirectoryProvider for test -->
<!--
<property name="hibernate.search.default.directory_provider">org.hibernate.search.store.FSDirectoryProvider</property>
-->
<property name="hibernate.search.default.directory_provider">filesystem</property>
<property name="hibernate.search.default.indexBase">./indexes</property>
<!--
-->
<property name="hibernate.search.worker.execution">async</property>
<property name="hibernate.search.default.optimizer.transaction_limit.max">100</property>
<!-- Mapped classes -->
<mapping class="net.leemoo.test.entity.NewsEntity"/>
</session-factory>
</hibernate-configuration>
и вот моя сущность:
@Entity
@Table(name="news")
@Indexed
@AnalyzerDef(
name = "PersianAnal",
charFilters = @CharFilterDef(factory = PersianCharFilterFactory.class),
tokenizer = @TokenizerDef(factory = StandardTokenizerFactory.class),
filters={
@TokenFilterDef(factory = ArabicNormalizationFilterFactory.class),
@TokenFilterDef(factory = PersianNormalizationFilterFactory.class)
}
)
public class NewsEntity {
@Id
@GeneratedValue
private Long id;
@Field
@Analyzer(definition="PersianAnal")
private String title;
@Field
@Analyzer(definition="PersianAnal")
private String newsAbstract;
@Field(index=Index.YES, analyze=Analyze.YES, store=Store.NO)
@Analyzer(definition="PersianAnal")
private String content;
@Field(index=Index.YES, analyze=Analyze.YES, store=Store.NO)
@DateBridge(resolution=Resolution.DAY)
private Date creationDate;
@Field(index=Index.YES, analyze=Analyze.YES, store=Store.NO)
@DateBridge(resolution=Resolution.DAY)
private Date modifiedDate;
private Integer viewsCounter;
@Field
@Analyzer(definition="PersianAnal")
private String keywords;
private Boolean jqueryNews;
private Boolean photoNews;
and setters and getters...
и это код, который я использую для поиска:
Session session = HibernateUtil.getSessionFactory().openSession();
session.beginTransaction();
FullTextSession fullTextSession = Search.getFullTextSession(session);
try {
// fullTextSession.createIndexer().startAndWait();
QueryBuilder gb = fullTextSession.getSearchFactory().buildQueryBuilder().forEntity(NewsEntity.class).get();
Query query = gb.keyword().
onFields("title", "newsAbstract", "content").
matching("test").createQuery();
org.hibernate.Query hibQuery = fullTextSession.createFullTextQuery(query, NewsEntity.class);
List<NewsEntity> result = (List<NewsEntity>)hibQuery.list();
System.out.println(result.size());
} catch (Exception e) {
// e.printStackTrace();
}
session.getTransaction().commit();
session.close();
Что я должен делать? Пожалуйста, помогите мне ....