我有一个标签系统,标签是这样的:
italian kitchen
chinese kitchen
japanese kitchen
russian kitchen
vegeterian kitchen
当我查询意大利厨房时,我没有得到意大利厨房。我总是得到俄语和日语以及其他不相关的结果。在 Solr 架构中,我的标签字段的类型是字符串。我不知道为什么会这样。你能和我分享你的想法吗?
我有一个标签系统,标签是这样的:
italian kitchen
chinese kitchen
japanese kitchen
russian kitchen
vegeterian kitchen
当我查询意大利厨房时,我没有得到意大利厨房。我总是得到俄语和日语以及其他不相关的结果。在 Solr 架构中,我的标签字段的类型是字符串。我不知道为什么会这样。你能和我分享你的想法吗?
“字符串”的字段类型意味着您的字段没有被标记化。所以每个字段都有一个标记——传入的整个字符串。所以除非整个字段上有一个精确的短语查询匹配,否则没有结果会比其他任何结果更相关,
您可能希望在默认模式中使用“文本”类型,这会将字段分解为标记。IE 而不是“Italian kitchen”,您将在该字段中同时索引“Italian”和“kitchen”术语。
您真的想通读有关标记器的部分,至少前两节。然后,如果您在 Solr 4 中,请转到管理界面并尝试您的核心部分下的分析屏幕。这使您可以将文本与您的类型(猫)一起输入,然后查看它实际分解为什么。
现在,在我看来,您希望“Italian Kitchen”成为一个侧面类别并且可以搜索。这是一个双重挑战,因为构面值来自生成的标记,因此您确实希望将其作为字符串。在这种情况下,我的建议是将cat字段保留为字符串字段,并将 copyField 复制到具有标记化类型的cat_text中(查看示例的架构)并使用 eDismax 搜索包括cat_text在内的多个字段。
确保你这样做:
q=your_field:"意大利厨房"
并不是
q=your_field:意大利厨房