我想在我的网站中提供一个搜索功能,用户只能按文本进行搜索,而无需指定属性。
例如,他不允许用户按"author=George Martin"进行搜索,而是简单地查询"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中使用"author:value",我应该得到相同的结果,对吧?
第一个版本将允许您为不同的字段分配不同的权重。 即标题中的命中可能比作者字段中的命中更重要 - 反之亦然。
使用 edismax 处理程序 (defType=edismax
( 和查询字段 (qf=title author published
( 将为您提供与第二个示例相同的行为,但将保留文档的结构。
当字段放入qf
参数时,用户无需显式告诉 Solr 她要搜索哪些字段。
要为字段提供不同的权重,请为qf
列表中的字段分配权重:qf=title^5 author^2 published
标题中的命中量将是published
命中的五倍 - 即"狩猎红色十月"将比十月发布的内容更重要。