Sphinx のドキュメントには、SphinxQL の使用に関する簡単な例があります。
SELECT * FROM test WHERE MATCH('@title hello @body world')
ids
コンマなどで区切られた整数値を含むvarchar 列をというテーブルに追加するとします。例えば:
-------------------------------
| title | body | ids |
-------------------------------
| hello | world | 5,251,87580 |
-------------------------------
特定の ID を含む行のみを選択するように上記のクエリ例を修正したい場合は、次のように簡単に変更できると思います。
SELECT * FROM test WHERE MATCH('@title hello @body world @ids 251')
右?
しかし、私がやりたいことは、列に特定の ID を含まないids
行を実際に返すことです。これは可能ですか?
編集:
「ブール式」の下で見つけたSphinxQLドキュメントから分岐するか、正確なフレーズ(またはこの場合は数字)を引用符で囲んでマイナス記号を入れるだけでよいので、答えを見つけたと思いましたフロント。
したがって、クエリの例は次のようになります。
SELECT * FROM test WHERE MATCH('@title hello @body world @ids -"251"')
うまくいくと思ったが、うまくいかない。
一致させたくない ID を から に変更251
する11
と、テーブルに次の列が存在します。
-------------------------------
| title | body | ids |
-------------------------------
| hello | world | 5,111,87580 |
-------------------------------
次に、このクエリ:
SELECT * FROM test WHERE MATCH('@title hello @body world @ids -"11"')
Sphinx は明らかに "111" 内の "11" に一致するため、その行は返されません。
私のconf設定があります:
index_field_lengths = 1
morphology = stem_en
min_word_len = 1
min_prefix_len = 1
prefix_fields = name
expand_keywords = 1