我有一个术语列表和相关的有效负载。如何将它们放入Lucene文档或更确切地说是字段?
这是我的清单:
List<MyTerm> list = new List<MyTerm>(){
new MyTerm(){
Text = "apple",
Payload = BitConverter.GetBytes(2)
},
new MyTerm(){
Text = "juice",
Payload = BitConverter.GetBytes(5)
}};
我想我必须使用以下字段的构造函数。
Field(string name, TokenStream tokenStream);
但是如何从我的列表中构建所需的tokenStream?
编辑
我想按字词搜索。自定义评分需要有效负载。
我的术语是图像的主要颜色,我想存储该颜色的百分比,以便在按颜色搜索时进行评分。如果有人搜索红色图像,则其中红色较多的图像的得分应高于红色较少的图像。
编辑
我要提到的是,一张图像可以具有多种主色。此外,我希望能够通过多种主要颜色搜索图像。例如:我想检索红色和蓝色很多的图像。因此,我猜测将颜色和强度放入不同的字段中不是一种选择。
最佳答案
好的,根据您的解释,我建议使用2个字段-一个用于术语(主要颜色),另一个用于有效载荷(颜色强度),然后对有效载荷进行排序。可能看起来像这样:
Field color = new Field("Color", colorString, Field.Store.No, Field.Index.ANALYZED));
Field intensity = new Field("Intensity", intensityString, Field.Store.No, Field.Index.NOT_ANALYZED));
color
字段用于查询,intensity
用于排序。如果需要,将值存储在索引中。取决于您的进一步需求。
顺便说一句:请使用编辑功能以其他信息更新您的原始问题。