如何将术语有效负载对放入lucene文档

时间:2011-01-27 23:14:17

标签: lucene lucene.net

我有一个术语列表和相关的有效负载。我如何将这些文件放入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?

修改

我想按条款搜索。自定义评分需要有效负载。

我的术语是图像的主色,我想在按颜色搜索时存储该颜色的百分比。如果有人搜索红色图像,那么红色图像中的红色图像的得分应该高于红色较少的图像。

修改

我应该提一下,一张图片可以有多种主色调。此外,我希望能够通过多种主色搜索图像。例如:我想要检索有很多红色和很多蓝色的图像。因此,我认为将颜色和强度放入不同的领域不是一种选择。

1 个答案:

答案 0 :(得分: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用于排序。

如果需要,请将值存储在索引中。取决于您的进一步需求。

BTW:请使用编辑功能更新原始问题及其他信息。