0
我有UUID通过使用PatternTokenizerFactory
正确索引为一个完整的单词,例如024bb09c-86b4-4d73-8483-bf7839e407d8
。休眠搜索如何正确搜索UUID
但搜索时,这种满弦的查询将返回一个错误,
The query string '024bb09c-86b4-4d73-8483-bf7839e407d8' applied on field 'id' has no meaningfull tokens to be matched. Validate the query input against the Analyzer applied on this field.
这是否意味着我需要设置具体分析,在准备好查询?
,报告这个错误的代码如下,
lucene = builder.keyword()
.onFields("id", "status", "submitter")
.matching(keyword)
.createQuery();
编辑:
下面是用于索引的分析,我们的原料id为group/UUID
形式,所以我用一个PatternTokenizer要删除前缀,
@AnalyzerDef(
name = "idanalyzer",
tokenizer = @TokenizerDef(
factory = PatternTokenizerFactory.class,
params = {
@Parameter(name = "pattern", value = ".*/(.*)"),
@Parameter(name = "group", value = "1")
}
),
filters = {
@TokenFilterDef(factory = LowerCaseFilterFactory.class),
}
)
这里是在实体代码,
@Id
@DocumentId
@Analyzer(definition = "idanalyzer")
private String id;
你看过这篇文章http://stackoverflow.com/questions/12753642/searching-for-uuid-in-lucene-not-working? – Filip
请分享实体映射,至少如何将id编入索引。 – Sanne
听起来像这样的问题可能是,一旦分析器完成它,查询就没有了。你的分析仪是什么样的? – femtoRgon