1

我目前正在使用 Lucene 搜索大量文档。

最常见的是搜索文档中对象的名称。

我正在使用带有一个空的停用词列表的标准分析器。这意味着像“和”这样的词将是可搜索的。

搜索词看起来像这样 (+keys:bunker +keys:s*)(keys:0x000bunkers*)

0x000 是一个前缀,以确保它在结果列表中排名靠前。

“keys”字段还包含其他信息,如邮政编码。

所以必须至少匹配其中之一。

现在完成了主要问题的背景。

出于某种原因,当我搜索具有单个字符的术语时。无论是 's' 还是 bunker 's' 都需要大约 1.7 秒,而 'bunk' 则需要不到 0.5 秒。

我有排序,我试过了,有没有没有区别。我试过带和不带前缀。

只是想知道是否有其他人遇到过这样的事情,或者会知道为什么会这样做。

谢谢你。

4

1 回答 1

1

索引中最常用的术语将是搜索速度最慢的术语。

您正在使用不会删除任何停用词的 StandardAnalyzer。此外,它在标点符号上拆分单词,因此John's被索引为两个术语Johnss这些拆分可能会在您的索引中创建大量的。

一个词在索引中出现的次数越多,Lucene 在搜索时要做的工作就越多。像这样的术语bunk在您的索引中出现的数量级可能要少得多,因此在搜索时处理它需要的工作要少得多。

于 2013-08-02T01:55:51.287 回答