php算法,用于从一串关键字创建关键字列表

时间:2013-11-26 09:51:44

标签: php algorithm

我有一串要搜索的关键字格式:A,B + C,D + E,B + F,E + G + H,...
每个字母代表一个关键字,+代表我希望所有关键字出现的时间 关键字无法保证订单 稍后我将在数据库中搜索包含这些关键字的名称 因此,按照我的例子,我会对包含以下内容的名称感兴趣:
A或(B和C)或(D和E)或(B和F)或(E和G和H)等。

问题是我只能在数据库中查询包含单个关键字的名称(它不是我的数据库的API)所以我需要创建一个关键字列表来检索名称,然后检查每个名称以查看如果它包含所有相关的关键字。

我需要一个算法来解析字符串并创建关键字列表,以最大限度地减少对数据库的查询。

例如,在我的例子中,我会得到名字:
一个
B并检查它们是否还包含C或F
E并检查它们是否还包含D或(G和H)

所以算法应该创建要查询的A,B,E的关键字列表,并且还要在每个关键字中添加它应该在名称中出现的关键字。

我在php工作所以我更喜欢php中的答案,但伪代码也会很好。 我希望很清楚......

1 个答案:

答案 0 :(得分:1)

Make empty array B.
Pass over the given array A, for each word X:
    If not apperars in B, add X to B as index, and set him value to 1/(No. of parts in this conjunction).
    Else, add 1/(No. of parts in this conjunction) to exist value.
Sort B by values, biggest first.
Make your queries from start to end.

逻辑是所有联合中词的重要性。

一个单独的单词非常重要,但是用另一个单词出现四次的单词更重要。