0

検索可能な比較的単純な階層タグ付けシステムを作成しようとしています。現時点での仕組みは次のとおりです。これは MySQL テーブル構造です。

--------------------------------------------
id  | tag         | parentID | topParentID |
--------------------------------------------
1   | Boston      | NULL     | NULL        |
--------------------------------------------
2   | Events      | 1        | 1           |
--------------------------------------------
3   | June 30th   | 2        | 1           |
--------------------------------------------
4   | NYC         | NULL     | NULL        |
--------------------------------------------
5   | Attractions | 4        | 4           |
--------------------------------------------

したがって、ユーザーが検索バーに「ボストン」と入力すると、「ボストン イベント」および「ボストン イベント 6 月 30 日」という候補が表示されます。同様に、検索バーに NYC と入力すると、「NYC アトラクション」が候補として表示されます。

また、検索バーに「イベント」と入力すると、「ボストン イベント」という候補が表示されます。6 月 30 日と入力すると、「ボストン イベント 6 月 30 日」という候補が表示されます。

これを行うためにコードをいじりました。クエリ文字列をキーワードに分割し、各キーワードのタグテーブルを検索して一致を返すことは間違いありませんが、完全なタグ文字列を返す正しい方法が見つかりませんでした私が上で述べた形式。

4

2 に答える 2

0

topParentID 列を削除して、「レベル」という名前の列を追加してもよいと思います (ボストンにはレベル 0、イベント レベル 1、6 月 30 日のレベル 2 があります)。したがって、このレベルの列で冷静に注文し、値を内破して、希望どおりのものが得られるようにします。

レベル列なしでそれを行うこともできますが、php 側での作業はさらに多くなると思います。

于 2013-07-24T18:47:21.000 に答える