我使用Lucene并为lucene索引的文档提供了一个包装类。此包装类在内部包含 Lucene.Net.Documents.Document 的实例。它看起来像这样:
export default class Login extends Component {
constructor(props, context) {
super(props, context);
this.state = {
username: null,
errorCopy: null
};
}
handleChange(e) {
this.setState({errorCopy: 'Generic error copy'});
}
render() {
return(
<TextField
hintText="Username"
value={this.state.username}
onChange={this.handleChange}
errorText={this.state.errorCopy} />
)
}
}
我使用包装纸以便于操作。如果我想创建一个新记录添加到索引我执行以下操作:
public class Wrapper
{
public Document Document { get; private set; }
public Wrapper()
{
this.Document = new Document();
// Adding fields here...
Document.Add(new Field("ID", "", Field.Store.YES, Field.Index.ANALYZED));
...
}
/// <summary>
/// Gets or sets the ID.
/// </summary>
public string ID
{
get { return this.Document.GetField("ID").StringValue; }
set { this.Document.GetField("ID").SetValue(value); }
}
...
}
我的问题是索引记录是完全空的。当我调试应用程序并检查变量&#34;包装器实例的Document-property时,我可以找到所有值。但它们并未存储在索引中。
有关于此的任何想法吗?
到目前为止我的进一步发现:
与此相比,我发现不使用包装器......如下所示......工作正常:
var w = new Wrapper();
w.ID = "5";
var writer = new IndexWriter(...);
writer.Add(w.Document);
我发现了这个问题+答案:https://stackoverflow.com/a/3364651/1623426他正在做类似的事情。但我的问题在哪里?