Lucene索引搜索通配符不匹配
我有一个索引,我正在使用Luke测试一些查询。有一个案例让我感到困惑 在索引中,我有以下名称: 走 走!克鲁格 走!纳米比亚 高尔夫球手 当我将SimpleAnalyzer与以下查询名称一起使用时:go我得到了预期的结果,go!在列表的顶部。但是,当我在查询中使用通配符时,Name:go*我得到的结果除了go!或其任何衍生物。Golfer仅在运行通配符查询时返回 我的理解是,星号通配符*的功能是零个或多个匹配项,还是我的理解不正确 感叹号似乎不算作索引中的字符。我知道这是一个保留的查询字符 我是否错过了什么,或者这是预期的行为?是否有人有可能的解决方法或解决方案 我目前的想法是破解它,这样如果搜索词是go,那么它就不会在查询中添加星号。然而,我不想这样做,因为我相信一定有更好的解决办法 更新 结果是,你走了!其他的都在通配符查询的结果中,只是它们几乎都是2000年底的结果Lucene索引搜索通配符不匹配,lucene,wildcard,Lucene,Wildcard,我有一个索引,我正在使用Luke测试一些查询。有一个案例让我感到困惑 在索引中,我有以下名称: 走 走!克鲁格 走!纳米比亚 高尔夫球手 当我将SimpleAnalyzer与以下查询名称一起使用时:go我得到了预期的结果,go!在列表的顶部。但是,当我在查询中使用通配符时,Name:go*我得到的结果除了go!或其任何衍生物。Golfer仅在运行通配符查询时返回 我的理解是,星号通配符*的功能是零个或多个匹配项,还是我的理解不正确 感叹号似乎不算作索引中的字符。我知道这是一个保留的查询字符 我是
有人知道如何在索引后使所有索引名称都小写吗?还是我必须重新索引所有内容?是否可以将分数更改为忽略大写字母?最后,我不得不一起破解一个解决方案。我检查搜索查询是否等于go,如果等于go,则不附加通配符 我认为这与搜索词的长度有关,比如停止词:a、an、the、or等等。停止词被排除在外,因为它们对搜索没有任何意义。搜索词越长,搜索结果越好
我将把这个标记为答案。希望有人会觉得这很有用,或者会找到一个正确的答案。如果您在查询和索引时都使用SimpleAnalyzer,那么您的通配符查询应该按预期工作,并且每个给定字符串都应该匹配。然而,在这种情况下,name:go不应该与completat Golfer匹配,因为在那里找不到令牌go。看起来使用的分析或添加的查询逻辑中还有一些不清楚的地方。@femtoRgon你说得对,我编辑了我的问题。Golfer仅返回通配符查询。看来我对这里的基本知识的理解是正确的。