/*
* Licensed to the Apache Software Foundation (ASF) under one or more
* contributor license agreements. See the NOTICE file distributed with
* this work for additional information regarding copyright ownership.
* The ASF licenses this file to You under the Apache License, Version 2.0
* (the "License"); you may not use this file except in compliance with
* the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package org.apache.nutch.indexer.field;
import java.io.DataInput;
import java.io.DataOutput;
import java.io.IOException;
import org.apache.hadoop.io.Text;
import org.apache.hadoop.io.Writable;
/**
* A class that holds a single field of content to be placed into an index.
*
* This class has options type of content as well as for how the field is to
* be indexed.
*/
public class FieldWritable
implements Writable {
private String name;
private String value;
private FieldType type = FieldType.CONTENT;
private float boost;
private boolean indexed = true;
private boolean stored = false;
private boolean tokenized = true;
public FieldWritable() {
}
public FieldWritable(String name, String value, FieldType type, float boost) {
this(name, value, type, boost, true, false, true);
}
public FieldWritable(String name, String value, FieldType type,
boolean indexed, boolean stored, boolean tokenized) {
this(name, value, type, 0.0f, indexed, stored, tokenized);
}
public FieldWritable(String name, String value, FieldType type, float boost,
boolean indexed, boolean stored, boolean tokenized) {
this.name = name;
this.value = value;
this.type = type;
this.boost = boost;
this.indexed = indexed;
this.stored = stored;
this.tokenized = tokenized;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getValue() {
return value;
}
public void setValue(String value) {
this.value = value;
}
public FieldType getType() {
return type;
}
public void setType(FieldType type) {
this.type = type;
}
public float getBoost() {
return boost;
}
public void setBoost(float boost) {
this.boost = boost;
}
public boolean isIndexed() {
return indexed;
}
public void setIndexed(boolean indexed) {
this.indexed = indexed;
}
public boolean isStored() {
return stored;
}
public void setStored(boolean stored) {
this.stored = stored;
}
public boolean isTokenized() {
return tokenized;
}
public void setTokenized(boolean tokenized) {
this.tokenized = tokenized;
}
public void readFields(DataInput in)
throws IOException {
name = Text.readString(in);
value = Text.readString(in);
type = FieldType.valueOf(Text.readString(in));
boost = in.readFloat();
indexed = in.readBoolean();
stored = in.readBoolean();
tokenized = in.readBoolean();
}
public void write(DataOutput out)
throws IOException {
Text.writeString(out, name);
Text.writeString(out, value);
Text.writeString(out, type.toString());
out.writeFloat(boost);
out.writeBoolean(indexed);
out.writeBoolean(stored);
out.writeBoolean(tokenized);
}
}