Lucene Index搜索通配符不匹配

时间:2013-12-05 15:37:31

标签: lucene wildcard

我有一个索引,我正在使用Luke来测试一些查询。有一个案子令我感到困惑。

在索引中,我有以下名称

  

去!

     

GO!克鲁格

     

GO!纳米比亚

     

完成高尔夫球手

当我使用SimpleAnalyzer以下查询Name:go时,我得到了预期的结果,“go!”位于列表的顶部。但是,当我在查询中使用通配符时,Name:go*我得到的结果除了“go!” (或其任何衍生物)。高尔夫球手只在运行通配符查询时返回。

我的理解是星号通配符(*)用作零或多个匹配,或者我的理解不正确?

感叹号似乎不算作索引中的字符。我知道它是一个保留的查询字符。

我错过了什么,或者这是预期的行为?有没有人有可能的解决方法或解决方案?

我目前的想法是“破解”它,以便如果搜索词是“go”,那么它不会将星号附加到查询中。但是,我不想这样做,因为我相信必须有更好的解决方案。

更新

事实证明,去吧!而其他人在通配符查询的结果中,只是它们几乎在2000年结果。

有人知道如何在索引后将所有索引名称设为小写吗?或者我必须重新索引一切?是否可以将分数更改为忽略大写字母?

1 个答案:

答案 0 :(得分:0)

最后,我不得不一起“破解”一个解决方案。我检查搜索查询是否等于“go”,如果是,我不会附加外卡字符。

我认为这与搜索词长度有关,请考虑停用词:a,an,the,等等。排除停用词,因为它们对搜索没有任何意义。搜索项越长,结果越好。

我打算将此作为答案。希望有人会发现这个有用或者会找到合适的答案。