我已经设置了我的第一个“安装”Solr,其中每个索引(文档)代表一个音乐作品(具有数字(int),标题(字符串),版本(字符串),作曲家(字符串)和关键字(字符串))。我已将字段'title'设置为默认搜索字段。
但是,当我想对所有字段进行查询时,我该怎么办?我想让用户有机会在所有领域进行搜索,据我所知,至少有两种选择:
(1)指定应针对哪些字段进行查询。
(2)使用copyfields设置Solr配置,以便添加到每个字段的值将被复制到可以用于搜索的“全包”字段。然而,在这种情况下,当我考虑到各个字段的数据类型并不完全相同时,我不确定事情会如何变化(各个字段将更小程度地通过过滤器,但作为copyfield在通过原始字段的过滤器运行值之前,将从原始字段中获取值,我必须对复制域上的所有值应用单个过滤器。这同样会导致整数被“过滤”为字符串会)。
这是我应该使用copyfields的情况吗?乍一看,仅仅搜索所有字段似乎更“灵活”。但是,也许有成本?
所有反馈表示赞赏!谢谢!
答案 0 :(得分:1)
执行复制字段时,将使用为该字段定义的分析器对目标字段中的数据建立索引。因此,如果将目标字段定义为文本数据,则最好只复制其中的文本数据。所以是的,在同一个字段中复制一个整数可能没有意义。但是,您真的希望用户能够在默认搜索中搜索您的“数字”字段吗?它对标题,作曲家和关键字有意义,但可能不适用于可能代表数据库中id的整数字段。
查询所有字段的另一个选项是使用Dismax。您可以准确指定要查询的字段,还可以为每个字段定义特定的引导。您还可以定义默认排序,为更新的文档和许多其他花哨的东西添加额外的提升。