我想在我的网站中提供搜索功能,用户只能通过文字进行搜索,而无需指定属性。
例如,不要让用户通过" author = George Martin"他只会查询乔治·马丁"。
我想知道像这样的文档模型是否有任何优势:
{
"id": 1,
"title": "Game of Thrones",
"author": "George R. R. Martin",
"published": "August, 1996"
}
与:相比:
{
"id": 1,
"data": [
"Game of Thrones",
"George R. R. Martin",
"August, 1996"
]
}
如果我不打算使用"作者:价值"在Solr API中,我应该得到相同的结果,对吧?
答案 0 :(得分:1)
第一个版本允许您为不同的字段分配不同的权重。即标题中的命中可能比作者字段中的命中更重要 - 反之亦然。
使用edismax处理程序(defType=edismax
)和查询字段(qf=title author published
)将为您提供与第二个示例相同的行为,但将保留文档的结构。
当字段放入qf
参数时,用户无需明确告诉Solr她想要搜索哪些字段。
要为字段指定不同的权重,请为qf
列表中的字段指定权重:qf=title^5 author^2 published
将在权重的五倍中创建权重,而不是published
中的匹配 - 即#"寻找红色十月"比10月发表的文章更重要。