我有一个标记系统,标签是这样的:
italian kitchen
chinese kitchen
japanese kitchen
russian kitchen
vegeterian kitchen
当我查询意大利厨房时,我没有把意大利厨房放在首位。我一直得到俄语和日语以及其他无关的结果。在Solr架构中,我的tags字段的类型是字符串。我不知道为什么会这样。你能和我分享你的想法吗?
答案 0 :(得分:4)
字段类型"字符串"表示您的字段未被标记化。因此,每个字段都有一个令牌 - 传入的整个字符串。因此,除非在整个字段上有一个精确的短语查询匹配,否则任何结果都不会比任何其他更相关,
你可能想要使用" text"在默认架构中,这会将字段分解为令牌。 IE而不是"意大利厨房"你会同时拥有"意大利语"和#34;厨房"在该领域索引的术语。
答案 1 :(得分:1)
你真的想通读the section on tokenizers,至少是前两节。然后,如果您在Solr 4中,请转到管理界面并尝试核心部分下的分析屏幕。这样您就可以将文本与您的类型(cat)放在一起,看看它实际上分解了什么。
现在,我觉得你希望“意大利厨房”成为一个可分类的分类。这是一个双重挑战,因为facet值来自生成的标记,所以你确实希望它作为一个字符串。在这种情况下,我的建议是将 cat 字段保留为字符串字段,并将copyField保存到具有标记化类型的 cat_text 中(查看示例的模式)并使用eDismax进行搜索跨多个字段,包括 cat_text 。
答案 2 :(得分:0)
确保你这样做:
q = your_field:“意大利厨房”
而不是
q = your_field:意大利厨房