Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/search/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Hibernate搜索-Lucene筛选器精确匹配行为异常_Hibernate_Search_Indexing_Lucene_Hibernate Search - Fatal编程技术网

Hibernate搜索-Lucene筛选器精确匹配行为异常

Hibernate搜索-Lucene筛选器精确匹配行为异常,hibernate,search,indexing,lucene,hibernate-search,Hibernate,Search,Indexing,Lucene,Hibernate Search,过滤时,我似乎遗漏了一些细节 在我的申请中,我有一个研究所提供的研讨会。研究所应该只看它提供的研讨会。因此,我想将研讨会的研究所字符串与过滤器匹配: new TermFilter( new Term("institute", institute) ); 及 该字段的注释如下所示 @Basic @Field(index = Index.YES, analyze = Analyze.NO, store = Store.NO) private String institute; 这只有在我使用“真

过滤时,我似乎遗漏了一些细节

在我的申请中,我有一个研究所提供的研讨会。研究所应该只看它提供的研讨会。因此,我想将研讨会的研究所字符串与过滤器匹配:

new TermFilter( new Term("institute", institute) );

该字段的注释如下所示

@Basic
@Field(index = Index.YES, analyze = Analyze.NO, store = Store.NO)
private String institute;
这只有在我使用“真实单词”作为机构名称时才有效,即字典中的单词。但是这个研究所通常类似于inst-1或inst-2,在这种情况下,我会从另一个研究所得到结果

我的猜测是,Lucene索引破坏了研究所的名称,并且匹配的比它应该匹配的更多


如何正确检索精确匹配的结果?

听起来很奇怪。Lucene不应该“弄坏”任何东西。由于您使用的是“Analyze.NO”,因此应按原样为机构名称编制索引。您的完整查询是什么样子的?您能否给出一个具体的示例,说明您正在索引的数据以及您得到的结果。您还可以检查索引以查看索引内容。为此,您可能需要使用Store.YES,以便索引项实际上存储在索引中。问题似乎自行解决了。我再也不能复制它了。我唯一的猜测是,在我关闭Analyze之后,Lucene索引没有得到更新,仍然返回旧的结果。这听起来很奇怪。Lucene不应该“弄坏”任何东西。由于您使用的是“Analyze.NO”,因此应按原样为机构名称编制索引。您的完整查询是什么样子的?您能否给出一个具体的示例,说明您正在索引的数据以及您得到的结果。您还可以检查索引以查看索引内容。为此,您可能需要使用Store.YES,以便索引项实际上存储在索引中。问题似乎自行解决了。我再也不能复制它了。我唯一的猜测是,在我关闭Analyze之后,Lucene索引没有得到更新,仍然返回旧的结果。
@Basic
@Field(index = Index.YES, analyze = Analyze.NO, store = Store.NO)
private String institute;