Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/apache-kafka/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Lucene索引搜索通配符不匹配_Lucene_Wildcard - Fatal编程技术网

Lucene索引搜索通配符不匹配

Lucene索引搜索通配符不匹配,lucene,wildcard,Lucene,Wildcard,我有一个索引,我正在使用Luke测试一些查询。有一个案例让我感到困惑 在索引中,我有以下名称: 走 走!克鲁格 走!纳米比亚 高尔夫球手 当我将SimpleAnalyzer与以下查询名称一起使用时:go我得到了预期的结果,go!在列表的顶部。但是,当我在查询中使用通配符时,Name:go*我得到的结果除了go!或其任何衍生物。Golfer仅在运行通配符查询时返回 我的理解是,星号通配符*的功能是零个或多个匹配项,还是我的理解不正确 感叹号似乎不算作索引中的字符。我知道这是一个保留的查询字符 我是

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

在索引中,我有以下名称:

走!克鲁格

走!纳米比亚

高尔夫球手

当我将SimpleAnalyzer与以下查询名称一起使用时:go我得到了预期的结果,go!在列表的顶部。但是,当我在查询中使用通配符时,Name:go*我得到的结果除了go!或其任何衍生物。Golfer仅在运行通配符查询时返回

我的理解是,星号通配符*的功能是零个或多个匹配项,还是我的理解不正确

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

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

我目前的想法是破解它,这样如果搜索词是go,那么它就不会在查询中添加星号。然而,我不想这样做,因为我相信一定有更好的解决办法

更新

结果是,你走了!其他的都在通配符查询的结果中,只是它们几乎都是2000年底的结果


有人知道如何在索引后使所有索引名称都小写吗?还是我必须重新索引所有内容?是否可以将分数更改为忽略大写字母?

最后,我不得不一起破解一个解决方案。我检查搜索查询是否等于go,如果等于go,则不附加通配符

我认为这与搜索词的长度有关,比如停止词:a、an、the、or等等。停止词被排除在外,因为它们对搜索没有任何意义。搜索词越长,搜索结果越好


我将把这个标记为答案。希望有人会觉得这很有用,或者会找到一个正确的答案。

如果您在查询和索引时都使用SimpleAnalyzer,那么您的通配符查询应该按预期工作,并且每个给定字符串都应该匹配。然而,在这种情况下,name:go不应该与completat Golfer匹配,因为在那里找不到令牌go。看起来使用的分析或添加的查询逻辑中还有一些不清楚的地方。@femtoRgon你说得对,我编辑了我的问题。Golfer仅返回通配符查询。看来我对这里的基本知识的理解是正确的。