我正在尝试从具有相关权重的用户输入的标签中索引一组图像。我试图使用作为有效载荷输入的权重。我按照这个post创建了字典对象。
我不确定在哪里添加分隔字段colors.Add(tag_name, (float)score);
或者应该是colors.Add("color_p", "tag_name |score");
如何使用帖子中提到的字典对象?
Dictionary<string, float> colors = new Dictionary<string, float>();
tags = TagUtils.GetTags(image, models["colors"]);
N = tags.TagNames.Count;
for (int n = 0; n < N; n++)
{
string tag_name = tags.TagNames[n];
int score = tags.Scores[n];
colors.Add(tag_name, (float)score);
}
docs_list.Add(new SolrDocument
{
_product_id = product_id,
_product_type = product_type,
_url = url,
_sku = sku,
_images = images.ToList<string>(),
_price = (float)price,
_name = name,
_color_p = colors,<--my payloads type field
});
我的schema.xml
看起来像这样:
<field name="color_p" type="payloads" indexed="true" stored="true" multiValued="true"/>
,定义如下:
<fieldtype name="payloads" stored="false" indexed="true" class="solr.TextField" >
<analyzer>
<tokenizer class="solr.WhitespaceTokenizerFactory"/>
<filter class="solr.DelimitedPayloadTokenFilterFactory" encoder="float" delimiter="|" />
</analyzer>
</fieldtype>
答案 0 :(得分:0)
发布一个答案,希望它可以像其他人一样帮助其他人:
*Dictionary<string, float> colors = new Dictionary<string, float>();*
实际应该是
Dictionary<string> colors = new Dictionary<string>();
并添加如下:
tags = colorTags.Result;
N = tags.TagNames.Count;
for (int n = 0; n < N; n++)
{
string tag_name = tags.TagNames[n];
int score = tags.Scores[n];
if (score > 0)
colors.Add(tag_name + "|" + score);
}