对于以下文档(假设每个文档中有一个字段):
1 - ABCD
2 - AB
3 - CDAB
(AD 是不同的术语)
我想创建一个仅匹配文档 1 和 2 的查询“A B”。我知道我可以插入一个特殊的“字段开头”标记来帮助我,但我更愿意避免这种情况(需要重新索引所有数据,而且也有点丑)。
怎样才能做到这一点?
对于以下文档(假设每个文档中有一个字段):
1 - ABCD
2 - AB
3 - CDAB
(AD 是不同的术语)
我想创建一个仅匹配文档 1 和 2 的查询“A B”。我知道我可以插入一个特殊的“字段开头”标记来帮助我,但我更愿意避免这种情况(需要重新索引所有数据,而且也有点丑)。
怎样才能做到这一点?
弄清楚了。诀窍是将SpanNearQuery与SpanFirstQuery结合起来。
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);