需要帮助,我有一个名为customer的蓝色索引,其中有两个字段-- customers & contacts,我已经为两个字段应用了boost函数( boost 100和90 ),问题是当我搜索任何文本时,它首先返回与客户相关的内容,然后再联系相关性。
如果我搜索" Johnson“,它将首先返回所有客户详细信息,然后再返回联系人详细信息,即使联系人名与"Johnson”匹配。
显示的记录列表。
记录1:这是客户
记录2:这是与客户“约翰逊和泰森”有关的联系方式。
记录3:这是与客户“约翰逊和泰森”有关的联系方式。
记录4:这是与客户"WST“相关的联系人。
因此,在这种方式下,记录最可能是在得分时显示的,但是,我希望先显示相关的名称,就像记录4是联系人,而且它应该代替记录2,因为Johnson是姓氏。
发布于 2016-08-17 21:07:52
我相信这是因为你用同样的价值观来提升,所以它是这样的:
if(Customer.Contains("Johnson") || (Contact.Contais("Johnson"))
{
//display
}//PS:这个声明只是为了澄清联系人和客户名称具有同样的重要性。
试着用不同的价值观来提升,我相信它会奏效的。(客户100人,详情90人)。
UPDATE
似乎您正在分别为名字和姓氏建立索引。如果您有一个字段“全名”,并通过它,您可能会得到预期的结果。另一个选项是使用以下字段创建得分配置文件:
https://azure.microsoft.com/en-us/documentation/articles/search-get-started-scoring-profiles/
发布于 2016-08-18 13:02:48
我把这个问题读了好几遍。虽然问题提到您有一个索引,但显示的记录意味着您实际上有两个搜索索引。这是正确的吗?我一直在研究一个Azure搜索培训课程,它深入讨论索引和评分。
此时,Azure搜索不支持交叉索引查询。因此,如果我对问题的理解是正确的,那么您必须运行两个查询:第一个关于客户索引,第二个针对联系人索引。Azure搜索之所以能够如此快速地执行搜索,部分原因在于它是一个扁平的数据结构,它允许快速查找和查询。然而,您的场景意味着某种关系性的东西。
我误解你的问题了吗?
https://stackoverflow.com/questions/38993696
复制相似问题