2012-05-29 32 views
0

对于以下文档(假设在每个文档的单个字段):
1 - ABCD
2 - AB
3 - CDABLucene的:匹配字段与一个短语开始

(AD是不同的条款)

我想创建一个查询“AB”,只匹配文档1和2.我知道我可以插入一个特殊的“字段开始”令牌来帮助我,但我更喜欢避免(需要重新索引所有数据,并且也有点难看)。

这怎么能实现?

回答

0

想通了。诀窍是将SpanNearQuerySpanFirstQuery合并。

SpanNearQuery spanNearQuery = new SpanNearQuery(new[] { new SpanTermQuery(new Term(field, "A")), new SpanTermQuery(new Term(field,"B")) },0, true); 
    SpanFirstQuery spanFirstQuery = new SpanFirstQuery(spanNearQuery, 2);