PHP关键字搜索

时间:2012-10-20 14:01:30

标签: php cassandra

我正在使用nosql数据库cassandra构建搜索系统,并且它不支持任何类型的关键字搜索,因此有一些选项,经过一些搜索,这就是提出的问题

我可以存储可以搜索的关键字列表,例如,假设它是一种音乐类型。所以我会存储所有这些类型,然后立即检索所有这些类型并使用PHP过滤它们,是否会说2k个关键字或更多?

我想在某处~100ms获得过滤结果可能吗?如果是这样,php函数会帮助我进行文字过滤?

1 个答案:

答案 0 :(得分:0)

如果您希望按音乐类型过滤歌曲或专辑,那么使用Cassandra实际上很容易。我会使用“'标记”这个术语。而不是流派,因为你可以用任何类型的标签真正做到这一点,而不仅仅是流派。

布置一个列族,其中键是标记,并且每个具有该标记的项目的行都有一个单元格。您可以使用项目名称或ID作为单元格名称,单元格值可以为空或包含您喜欢的任何其他元数据。

使用phpcassa(基于Cassandra的原始Thrift RPC API),如果你想在一个标签下存储一个项目,它就像这样简单:

 $cf->insert($tag, array($item->name, $item->metadata));

要获取具有特定标记的所有项目,请执行以下操作:

$cf->get($tag);

虽然一个好的PHP CQL 3驱动程序还没有完成,但使用CQL 3你可以这样做:

CREATE TABLE TAGS (
    tag utf8,
    itemid uuid,
    PRIMARY KEY (tag, itemid)
);

您可以像这样添加标记项目:

INSERT INTO TAGS (tag, itemid) values ("rock", "Led Zeppelin");

您可以通过执行以下操作来获取带有标记的所有项目:

SELECT * FROM TAGS WHERE tag="rock";

你可以轻松地在一个标签下存储一百万个项目,然后获取第一个,比如2000,将非常快,只有几毫秒。