Hibernate Search Filter的Enum效果不理想

问题描述

| 我正在使用休眠搜索3.4,并且遇到了一个小问题。我有一个尝试使用的过滤器(
CourseStatusFilterFactory
),但是每次启用它时,都不会返回任何结果。我还有另一个过滤器可以正常工作(
DeletedFilterFactory
),所以我不确定是什么问题。 这是我要搜索的对象:
@Entity
@Cache(usage = CacheConcurrencyStrategy.READ_WRITE)
@Indexed
@FullTextFilterDefs({
    @FullTextFilterDef(name = \"statusFilter\",impl = CourseStatusFilterFactory.class,cache = FilterCacheModeType.NONE),@FullTextFilterDef(name = \"deletedCourse\",impl = DeletedFilterFactory.class,cache = FilterCacheModeType.NONE)})
public class Course extends LightEntity implements Serializable {

    private static final long serialVersionUID = 21L;
    @Id
    @DocumentId
    @GeneratedValue(strategy = GenerationType.AUTO)
    private Long id;
    @Field(name = \"title\",index = Index.TOKENIZED,store = Store.YES)
    private String title;
    @Field(name = \"coursestatus\",store = Store.YES)
    @Enumerated(EnumType.STRING)
    private CourseStatus status;}
我的任何FilterFactory:
public class CourseStatusFilterFactory {

private CourseStatus status;

public void setStatus(CourseStatus status) {
    this.status = status;
}

@Key
public FilterKey getKey() {
    StandardFilterKey key = new StandardFilterKey();
    key.addParameter(status);
    return key;
}

@Factory
public Filter getFilter() {
    String statusstring = new EnumBridge().objectToString(this.status);
    Query query = new TermQuery(new Term(\"coursestatus\",statusstring));
    CachingWrapperFilter cachingWrapperFilter = new CachingWrapperFilter(new QueryWrapperFilter(query));
     return cachingWrapperFilter;
}}
并启用我的过滤器:
persistenceQuery.enableFullTextFilter(\"statusFilter\").setParameter(\"status\",CourseStatus.PUBLISHED);
调试代码时,我可以看到过滤器中的查询确实设置为\“ coursestatus:PUBLISHED \”,但即使有几十个结果,我仍然有0个结果。 关于从哪里开始的任何想法?     

解决方法

        多亏了休眠论坛中某些人的帮助,我才得以解决此问题。 我需要改变
@Field(name = \"coursestatus\",index = Index.TOKENIZED,store = Store.YES)
@Field(name = \"coursestatus\",index = Index.UN_TOKENIZED,store = Store.YES)