【问题标题】:How to put term payload pairs to a lucene document如何将术语有效负载对放入 lucene 文档
【发布时间】:2011-06-16 22:09:22
【问题描述】:

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

编辑

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

我的术语是图像的主色,我想存储该颜色的百分比以在按颜色搜索时进行评分。如果有人搜索红色图像,其中红色较多的图像应该比红色较少的图像得分更高。

编辑

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

【问题讨论】:

  • 你想怎么搜索?仅在条款上还是仅在有效载荷上或两者兼而有之?你想要的结果是什么?你想通过搜索词找到payload吗?
  • 我想按字词搜索。自定义评分需要有效负载。我的术语是图像的主色,我想存储该颜色的百分比以在按颜色搜索时进行评分。如果有人搜索红色图片,那么红色较多的图片得分应该高于红色较少的图片。

标签: lucene lucene.net


【解决方案1】:

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

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

顺便说一句:请使用编辑功能用您的附加信息更新您的原始问题。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-04-29
    • 2012-02-22
    • 2014-11-29
    • 2012-02-14
    • 1970-01-01
    • 1970-01-01
    • 2012-02-05
    • 2011-05-28
    相关资源
    最近更新 更多