如何使用Lucene进行精确搜索

时间:2018-08-09 06:07:19

标签: java hibernate lucene

当我们搜索“ prd gem”时。它返回所有带有prd gem的结果名称。 但是当我们仅搜索“ prd”时,它将返回其中带有prd的所有结果,例如prd,prd gem,prd time等。为什么现在不精确搜索?

以下为图片中的代码:

RouterModule.forRoot(routes, { useHash: true })

精确搜索可以很好地处理带有空格的名称,就像我搜索“ Prd Gem”一样,它仅显示一个名称为“ Prd Gem”的产品,但是当我仅搜索“ prd”这样的词时,精确搜索不起作用,它显示所有产品,例如“ prd”,“ prd gem”

那么为了实现相同的功能,需要对上述代码进行哪些更改?

1 个答案:

答案 0 :(得分:0)

那是因为您正在“标记” lucene索引中的数据。

默认情况下,Lucene会尝试将字符串分成令牌,以允许并加快此类搜索的速度。

我假设您正在使用最新的休眠模式。您可以尝试使用以下注释“ productName”字段吗?

 @Field(name = "productName",  index = Index.YES, analyze = Analyze.NO, norms = Norms.NO)

“ analyze = Analyze.no”部分应禁用此功能。