lucene spanquery匹配相同的单词

lucene spanquery匹配相同的单词,lucene,Lucene,我有一个系统,使用lucene根据用户给出的查询搜索文档。 当用户的查询包含多个单词时,我将创建一个span arquery,每个单词都作为术语,最后一个术语是前缀查询的包装器,span=0。 例如,如果用户输入是 新y 这应该与纽约和纽约的情况相符 这很好,但是如果查询有两个相同的单词,例如bora bora, 即使是只有一张波拉照片的文件也是匹配的 我怎么能只配宝来宝来* 代码: String[] words = querystr.split(" "); SpanQue

我有一个系统,使用lucene根据用户给出的查询搜索文档。 当用户的查询包含多个单词时,我将创建一个span arquery,每个单词都作为术语,最后一个术语是前缀查询的包装器,span=0。 例如,如果用户输入是 新y 这应该与纽约和纽约的情况相符

这很好,但是如果查询有两个相同的单词,例如bora bora, 即使是只有一张波拉照片的文件也是匹配的

我怎么能只配宝来宝来*

代码:

String[] words = querystr.split(" ");           
SpanQuery[] clauses = new SpanQuery[words.length];
for (int i = 0; i < words.length; i++) {                
   if (allWordsPrefix || i == words.length - 1)
   {
        PrefixQuery pq = new PrefixQuery(new Term(LOWER_VALUE, words[i])); 
        clausesWildCard[i] = new SpanMultiTermQueryWrapper<PrefixQuery>(  
   }
   else
   {
        Term clause = new Term(LOWER_VALUE, words[i]); 
        clausesWildCard[i] = new SpanTermQuery(clause);
   }                
}
SpanQuery allTheWords = new SpanNearQuery(clausesWildCard, 0, false);
编辑: 我发现这似乎是一个已知的问题

但我不明白这是解决了还是有解决办法


升级到lucene 5.0.0,但它仍在运行…

您在建立索引时是否使用了瓦状过滤器?这是我想出的解决办法。简而言之,每个连续的词对都必须进行索引。例如,忽略停止词,快速棕色狐狸跳过懒惰的狗,除了索引每个单词外,还将有快速棕色棕色狐狸跳跃。等等


也许其他人会有更好的解决方案。

不,我不使用它。。。我想它会起作用,但这似乎是一个非常奇怪的解决方案。。。