0

私は2つのテーブルを持っています

Table 1: Profiles table: p_id, p_title, p_presentation, p_date

Table 2: Tags table: tag_id, profile_id, tag_text

検索に一致するタグを確認したい:

例: タグ: 車; 赤い車; 大きい車

「車」を検索するときは、完全に一致するものだけが必要です。「赤い車」のタグは気にしません。

残りについては、たとえば通常の検索 (SPH_MATCH_EXTENDED2) が必要です。

そのため、正確なタグ (たとえば 20 個のプロファイル結果) を含むプロファイルを表示し、続いて次の結果を p_date などで並べて表示したいと考えています。

ありがとう

4

2 に答える 2

0

どうやって...

sql_query = SELECT p_id, p_title, ..., \
            GROUP_CONCAT(tag_id) AS tag_ids, \
            CONCAT('_SEP_ ',GROUP_CONCAT(tag_text SEPERATOR ' _SEP_ '),' _SEP_') AS tag_text \
            FROM Profiles LEFT JOIN Tags ON (profile_id=p_id)
sql_attr_multi = uint tag_ids from field;

次に、フレーズ演算子を使用して正確なタグを検索できます。

"_SEP_ car _SEP_"

「大きな車」と一致しません

ドキュメントごとに複数のタグを持つことができるため、フィールドの開始/終了修飾子は機能しません。

于 2012-10-24T11:42:14.283 に答える
0

スフィンクスのドキュメントから:

たとえば、クエリ "^hello world$" (引用符を使用し、句演算子と開始/終了修飾子を組み合わせたもの) は、これら 2 つのキーワードを正確に含むフィールドを少なくとも 1 つ含むドキュメントにのみ一致します。

start 修飾子と end 修飾子を使用して、正確な結果を得ることができます。これを引用して使用します。

"^car$"

これが役立つことを願っています!

于 2012-10-23T11:29:52.583 に答える