次のクエリがあります。
SELECT * `library` WHERE
(
UCASE( `text` ) REGEXP '((^KEYWORD|[[.space.]]KEYWORD)([[.space.]]|[[.comma.]]|[[.period.]]|[[.colon.]]|[[.semicolon.]]|[[.apostrophe.]]|[[.quotation-mark.]]|[[.exclamation-mark.]]|[[.question-mark.]]))((^KEYWORD2|[[.space.]]KEYWORD2)([[.space.]]|[[.comma.]]|[[.period.]]|[[.colon.]]|[[.semicolon.]]|[[.apostrophe.]]|[[.quotation-mark.]]|[[.exclamation-mark.]]|[[.question-mark.]]))'
)
** 編集 **
SQLフィドルを追加しました:
http://sqlfiddle.com/#!2/8f822/2/0
読み取り可能な形式では、これは次のとおりです。
SELECT * FROM `library` WHERE
(
UCASE( `text` ) REGEXP '
(
(
^KEYWORD | [[.space.]]KEYWORD
)
(
[[.space.]] |
[[.comma.]] |
[[.period.]] |
[[.colon.]] |
[[.semicolon.]] |
[[.apostrophe.]] |
[[.quotation-mark.]] |
[[.exclamation-mark.]] |
[[.question-mark.]]
)
)
(
(
^KEYWORD2 | [[.space.]]KEYWORD2
)
(
[[.space.]] |
[[.comma.]] |
[[.period.]] |
[[.colon.]] |
[[.semicolon.]] |
[[.apostrophe.]] |
[[.quotation-mark.]] |
[[.exclamation-mark.]] |
[[.question-mark.]]
)
)
)'
ここで、次のことを行うためのクエリが必要ですが、ここでレンガの壁にぶつかっています。
キーワードがテキスト内に表示される場合、テキストを開始するか、前にスペースを置き、その後に特殊文字の 1 つを続けて、結果を表示します。
これは私が必要としているように実際には機能しませんが、両方が表示された場合に一致させる方法をドキュメントで見つけることができません。たとえば、文字列を一致させようとする"keyword,"
、"keyword "
または"keyword;"
次に、キーワード 2 に対して同じタイプのクエリを一致させる必要があります。
次に、keyword と keyword2 の両方の式が true である必要があり、それらの結果のみが必要です。
たとえば、テキスト
A lazy brown fox jumped over the fence.
Then he found a chicken.
Then he ate the chicken and ran from the farmer.
と
A fox found a chicken.
Then he ate the chicken and ran from the farmer.
Then fox jumped over the fence.
彼は次のキーワードで操作する必要がありますfence
chicken
しかし、これは次のテキストと一致するべきではありません
A lazy brown fox jumped over the fences.
Then he found a chicken.
Then he ate the chicken and ran from the farmer.
答え
最終的なクエリは次のようになりました
SELECT *
FROM`library`
WHERE
UCASE(`text` ) REGEXP '(^| )FENCE[[.space.][.comma.][.period.][.colon.][.semicolon.][.apostrophe.][.quotation-mark.][.exclamation-mark.][.question-mark.]]'
AND
UCASE(`text` ) REGEXP '(^| )CHICKEN[[.space.][.comma.][.period.][.colon.][.semicolon.][.apostrophe.][.quotation-mark.][.exclamation-mark.][.question-mark.]]'
正規表現はランダムな順序の検索をサポートしておらず、 nをキーワード検索文字列の数の累乗にしたくないので、これが最善の解決策です。
見てくれてありがとう。