2021-01-30 22:14:48 +01:00
|
|
|
package it.cavallium.dbengine.lucene.serializer;
|
2020-12-07 22:15:18 +01:00
|
|
|
|
2021-02-12 19:39:02 +01:00
|
|
|
import java.util.Arrays;
|
|
|
|
import java.util.stream.Collectors;
|
|
|
|
|
2020-12-07 22:15:18 +01:00
|
|
|
public class PhraseQuery implements Query {
|
|
|
|
|
|
|
|
// some terms can be null
|
|
|
|
private final TermPosition[] parts;
|
|
|
|
|
|
|
|
public PhraseQuery(TermPosition... parts) {
|
|
|
|
this.parts = parts;
|
|
|
|
}
|
|
|
|
|
|
|
|
@Override
|
|
|
|
public void stringify(StringBuilder output) {
|
|
|
|
StringBuilder data = new StringBuilder();
|
|
|
|
StringBuilder listData = new StringBuilder();
|
|
|
|
listData.append(parts.length).append('|');
|
2021-02-03 14:37:02 +01:00
|
|
|
for (TermPosition part : parts) {
|
|
|
|
StringifyUtils.stringifyTermPosition(listData, part);
|
2020-12-07 22:15:18 +01:00
|
|
|
}
|
|
|
|
StringifyUtils.writeHeader(data, QueryConstructorType.TERM_POSITION_LIST, listData);
|
|
|
|
StringifyUtils.writeHeader(output, QueryConstructorType.PHRASE_QUERY, data);
|
|
|
|
}
|
2021-02-12 19:39:02 +01:00
|
|
|
|
|
|
|
@Override
|
|
|
|
public String toString() {
|
|
|
|
return Arrays.stream(parts).map(Object::toString).collect(Collectors.joining(", ", "(", ")"));
|
|
|
|
}
|
2020-12-07 22:15:18 +01:00
|
|
|
}
|