如何将术语负载对放入Lucene文档

3

我有一份术语列表和相关的数据负载。如何将它们放入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?

编辑

我想按术语搜索。需要有效载荷进行自定义评分。

我的术语是图像的主导颜色,我想存储该颜色的百分比以便在按颜色搜索时进行评分。如果有人搜索红色图像,则具有大量红色的图像应得到比具有较少红色的图像更高的评分。

编辑

我应该提到,一个图像可以有多个主导颜色。此外,我希望能够通过多个主导颜色搜索图像。例如:我想检索具有很多红色和很多蓝色的图像。因此,我猜想将颜色和强度放入不同的字段不是一个选择。


你想要如何搜索?只在术语上还是只在有效载荷上或两者都有?你想要什么样的结果?你想通过搜索术语来查找有效载荷吗? - gumo
我想按照条件进行搜索。自定义评分需要使用有效载荷。我的条件是图像的主要颜色,并且我想存储该颜色的百分比以便在按颜色搜索时进行评分。如果有人搜索红色图像,则具有大量红色的图像应得到比具有较少红色的图像更高的评分。 - user593485
1个回答

0

好的,根据您的解释,我建议使用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用于排序。

如果您想要的话,可以在索引中存储这些值。具体取决于您的需求。

顺便说一下:请使用编辑功能更新您的原始问题,以包含您的其他信息。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接