当前位置: 首页 > 知识库问答 >
问题:

Hibernate搜索不索引

东郭和光
2023-03-14

我使用< code > Hibernate Search 4 . 5 . 1 编写了< code>Spring web-app。当我尝试搜索时,它返回一个条目列表。我认为索引中的问题。用于索引的目录已创建,但实体保存文件后,目录中的文件不变。

这是我的Spring配置文件

<beans
        xmlns="http://www.springframework.org/schema/beans"
        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
        xmlns:context="http://www.springframework.org/schema/context"
        xmlns:jpa="http://www.springframework.org/schema/data/jpa" xmlns:tx="http://www.springframework.org/schema/tx"
        xmlns:security="http://www.springframework.org/schema/security"
        xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-3.1.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context-3.1.xsd
http://www.springframework.org/schema/data/jpa
            http://www.springframework.org/schema/data/jpa/spring-jpa.xsd http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx.xsd http://www.springframework.org/schema/security
           http://www.springframework.org/schema/security/spring-security-3.2.xsd">

    <context:component-scan base-package="project"/>
    <context:annotation-config/>

    <jpa:repositories base-package="project" transaction-manager-ref="hibernateTransactionManager"
                      entity-manager-factory-ref="entityManagerFactory"/>

    <bean id="entityManagerFactory" name="managerFactory"
          class="org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean">
        <property name="packagesToScan" value="project"/>
        <property name="dataSource" ref="postgresDataSource"/>
        <property name="validationMode" value="NONE"/>
        <property name="jpaProperties">
            <props>
                <prop key="hibernate.show_sql">true</prop>
                <prop key="hibernate.hbm2ddl.auto">update</prop>
                <prop key="hibernate.dialect">org.hibernate.dialect.PostgreSQL81Dialect</prop>
            </props>
        </property>
        <property name="persistenceProvider">
            <bean class="org.hibernate.jpa.HibernatePersistenceProvider"/>
        </property>

    </bean>


    <bean id="postgresDataSource" class="org.apache.commons.dbcp.BasicDataSource">
        <property name="driverClassName" value="org.postgresql.Driver"/>
        <property name="url" value="jdbc:postgresql://localhost:5432/LabourExchange"/>
        <property name="username" value="postgres"/>
        <property name="password" value="123456"/>
    </bean>

    <bean id="hibernateTransactionManager" class="org.springframework.orm.hibernate4.HibernateTransactionManager">
        <property name="dataSource" ref="postgresDataSource"/>
        <property name="sessionFactory" ref="sessionFactory"/>
    </bean>

    <tx:annotation-driven transaction-manager="hibernateTransactionManager"/>

    <bean id="sessionFactory" class="org.springframework.orm.hibernate4.LocalSessionFactoryBean">
        <property name="dataSource" ref="postgresDataSource"/>
        <property name="packagesToScan" value="project"/>
        <property name="hibernateProperties">
            <props>
                <prop key="hibernate.dialect">${hibernate.postgres.dialect}</prop>
                <prop key="hibernate.max_fetch_depth">2</prop>
                <prop key="hibernate.jdbc.fetch_size">50</prop>
                <prop key="hibernate.jdbc.batch_size">8</prop>
                <prop key="hibernate.show_sql">false</prop>
                <prop key="hibernate.hbm2ddl.auto">validate</prop>
                <prop key="hibernate.search.default.directory_provider">filesystem</prop>
                <prop key="hibernate.search.default.indexBase">/var/lucene/indexes</prop>
            </props>
        </property>
    </bean>

    <!--security config-->
    <security:http auto-config="true" use-expressions="true">
        <security:intercept-url pattern="/pages/**" access="isAuthenticated()"/>
        <security:form-login
                login-page="/auth/login.jsf"
                default-target-url="/pages/home.jsf"
                authentication-failure-url="/auth/login.jsf?status=error"/>
        <security:logout logout-success-url="/hello.jsf"/>
    </security:http>

    <security:authentication-manager>
        <security:authentication-provider user-service-ref="UserDetailsService">
        </security:authentication-provider>
    </security:authentication-manager>
</beans>

我的实体文件

@Entity
@Table(name = "resumes")
@Indexed
public class Resume {
    @Id @Column(name = "id") @GeneratedValue(strategy = GenerationType.IDENTITY)
    private long id;

    @Column(name = "title")
    @Field(index= Index.YES, analyze= Analyze.YES, store= Store.NO)
    @NotBlank @Size(min = 10, max = 100)
    private String title;

    @Column(name = "text")
    @Field(index=Index.YES, analyze=Analyze.YES, store=Store.NO)
    @NotBlank @Size(min = 50, max = 10000)
    private String text;

    @Column(name = "salary")
    @NotNull
    private double salary;

    @ManyToOne(optional = false)
    @JoinColumn(name = "creator_id")
    private User creator;

    public User getCreator() {
        return creator;
    }

    public void setCreator(User creator) {
        this.creator = creator;
    }

    public long getId() {
        return id;
    }

    public void setId(long id) {
        this.id = id;
    }

    public String getTitle() {
        return title;
    }

    public void setTitle(String title) {
        this.title = title;
    }

    public String getText() {
        return text;
    }

    public void setText(String text) {
        this.text = text;
    }

    public double getSalary() {
        return salary;
    }

    public void setSalary(double salary) {
        this.salary = salary;
    }
}

共有1个答案

邵宜年
2023-03-14

我搬家解决问题了

<prop key="hibernate.search.default.directory_provider">filesystem</prop>
<prop key="hibernate.search.default.indexBase">/var/lucene/indexes</prop>

JPA 属性标记

 类似资料:
  • 我正在使用Hibernate Search/Lucene Intégration开发一个J2E应用程序。我索引文档(和其他实体),并希望对其进行不区分重音的搜索(内容和类的字段)。 这样做好吗?是否没有param或conf属性让FrenchAnalyzer忽略重音? 谢谢

  • 我正在用Hibernate Search 4.5.1和Spring 4.0.5版本构建一个应用程序。我正在尝试索引以下类: 我正在构建一个junit测试用例,看起来如下所示: 我还注意到在luke lucene上,一些索引词的长度最多为6个字符,例如,一首歌的艺术家是“后代”,而索引中存储的词是“the”和“offspr”。第一个可以,但第二个不应该是“后代”。为什么要截断名字?

  • persistence.xml 我似乎找不到关于如何使用Play Framework2.5+的Hibernate搜索的好教程。 谢谢你! 此处建议:https://stackoverflow.com/A/30656145/6682875

  • 我刚开始使用hibernate lucene搜索。从几天以来,我一直致力于搜索关键字与特殊字符。我正在使用MultiFieldQueryParser进行精确短语匹配以及布尔搜索。但在这个过程中,我无法得到搜索关键字的结果,如“有1年以上的经验”,如果我没有在搜索关键字周围添加任何引号,那么我就得到了结果。所以我在执行lucene查询时观察到的是,它正在转义特殊符号(+)。我正在使用Standard

  • 我有大量相同类型的实体,每个实体都有大量属性,并且我只有以下两种选择来存储它们: 将每个项存储在索引中并执行多索引搜索 将所有enties存储在单个索引中,并且只搜索1个索引。 一般而言,我想要一个时间复杂度之间的比较搜索“N”实体与“M”特征在上述每一种情况!

  • 我在我的应用程序中使用Hibernate搜索。其中一个子集合映射为IndexeDemBedded。子对象有两个字段,一个是id,另一个是date(使用date resoultion到毫秒)。当我搜索ID=1(或某个值)并且date等于另一个值时,我会得到第一个和第二个匹配的所有情况的结果。我只想在同一个孩子中获得两个字段匹配的记录,但我在不同的孩子中获得匹配,结果会高得多。下面是代码片段 主类是用