0

是的,每个标签都有唯一的 ID。我不必将这些唯一 ID 存储在表中。我可以这样存储它们……</p>

$tags = array("Music","Sports","Food","Books",………)

数组对我来说是最好的方式,因为它很容易改变。此外,数组键本身将用作唯一 ID。

但我的情况比较危急,所以让我详细说明一下具体情况。

我有一个表,其中包含 Id、Title、Description、Tags 等字段等。

Id  |    Title      |  Description                     |  Tags  
1   | Sport & Hygine| With sport & music good food is …| Sport, Food
2   | Rock Concert  | Great Rock Show at …             | Music, Dance

如果用户选择(过滤)来显示记录,则标签字段中有音乐。虽然 Title 和 description 在第二行根本没有 Music 这个词,但还是应该放在第一位。还应该注意的是,标题和描述是文本字段,Sphinx 应该搜索正常的方式,为标题和描述提供适当的权重和排名。但是无法将标签字段作为文本索引进行搜索。标签字段需要过滤。

因此,在上面的示例中,如果选择了音乐,则应该只显示第 2 行,因为它是根据标签过滤的,第 2 行的标签字段中只有音乐。但是音乐也出现在描述字段的第 1 行,但这里应该忽略它。我希望我能够澄清情况。对此的任何支持都将受到高度赞赏。

4

1 回答 1

0

unique-id 需要在所有文档中都是唯一的。这样“Sports”在所有文档上都具有相同的 ID,因此可以使用相同的 ID 进行搜索。因此,您搜索的是 ID,而不是单词。

所以标签可以用来影响排名,你可以把它们放在一个字段中。但也将标签 ID 存储在 MVA 中,因此可以用于 setFilter。

就像是

音乐@tags 音乐

应该作为扩​​展查询工作。因为它需要标签中的音乐一词。但第一个学期也将匹配所有领域并有助于排名。

于 2013-07-24T11:32:12.640 回答