Filter Sphinx多值属性过滤器

Filter Sphinx多值属性过滤器,filter,sphinx,multivalue,Filter,Sphinx,Multivalue,是的,每个标签都有唯一的Id。我不必将这些唯一的Id存储在表中。我可以这样储存它们 $tags = array("Music","Sports","Food","Books",………) 数组对我来说是最好的方式,因为它很容易改变。此外,数组键本身将用作唯一Id 但我的处境更为危急,所以让我详细说明一下确切的情况 我有一个带有Id、标题、描述、标签等字段的表 Id | Title | Description | Tags 1

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

$tags = array("Music","Sports","Food","Books",………)
数组对我来说是最好的方式,因为它很容易改变。此外,数组键本身将用作唯一Id

但我的处境更为危急,所以让我详细说明一下确切的情况

我有一个带有Id、标题、描述、标签等字段的表

Id  |    Title      |  Description                     |  Tags  
1   | Sport & Hygine| With sport & music good food is …| Sport, Food
2   | Rock Concert  | Great Rock Show at …             | Music, Dance
如果用户选择(筛选)显示记录,则在标记字段中显示音乐。虽然标题和描述在第二行中根本没有“音乐”这个词,但它仍然应该得到第一优先权。还应注意,标题和描述是文本字段,Sphinx应以正常方式搜索,为标题和描述赋予适当的权重和等级。但标记字段不能作为文本索引进行搜索。需要筛选标记字段


因此,在上面的示例中,如果选择了音乐,则只应显示第2行,因为它是基于标记进行过滤的,并且第2行在标记字段中仅包含音乐。但是音乐也出现在描述字段的第1行中,但在这里它应该被忽略。我希望我能够澄清情况。非常感谢任何具有此功能的hep。

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

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

差不多

音乐@标签音乐


应该用作扩展查询。因为它需要标签中的单词Music。但第一学期也将匹配所有的场域,并有助于排名

对于被这个问题中的引用弄糊涂的人来说,这似乎是一种误解,他们都有独特的Id(比如说)音乐有Id 1,体育有Id 2等等。然后表中的标记字段数据将类似于第1行的2,3和第2行的1,5,依此类推。如原问题所述,这里我们得到的是逗号,如2、3等。因此,该字段从来不是数字(它是数字和逗号的组合),那么我们如何应用setFilter呢。因为setFilter必须应用于整数字段。如果它是一个单一的数字,我总是可以使用setFilter。另外,我不理解Music@tags Music是如何表示的,也不理解它的基本含义。在索引过程中,你会将一个字符串传递给sphinx(如果它是在sql_查询过程中计算的,或者是一个实际的文本列,那么它就无关紧要了)。Sphinx将自动解析“以逗号分隔的数字列表”,并将其存储在MVA中。它给每个文档附加了多个id。或者你的意思是我应该有另一个单独的表,称为Tags。此标记表将包含字段Id、标记。然后在sphinx src中,我将编写如下内容…sql\u attr\u multi=uint标记from query;出于我的无知,请选择Id,Tag FROM Tagsorry,但在索引期间如何传递字符串。我从UNIX命令行运行索引器,如下所示:indexer--config sphinx.conf test1,其中test1是我正在索引的文档。那么,如何在索引过程中传递字符串…在
sql\u查询
config中。