2016-09-02 15 views
0

私のサイトの小さくて単純な検索ツールについては、MySQLのMATCH AGAINSTを使用して、検索用語に基づいて最も関連性の高い行を見つけます。今度は次のクエリを使用します:MySQLの検索一致部分の単語

たとえば、「sys」を検索すると、システムまたはシステムのような単語で結果が表示されます。私が抱えている問題と達成したいことは、検索語が「システム」である場合、「システム」という単語で結果を得たいという正確な単語「システム」を使った結果しか得られないということです。同じように。

私はすでにドキュメントをチェックしましたが、解決策が見つからないようです。誰かがこれに前に遭遇しましたか?

+0

これはできません。それについて考える。 '' $ term。 "*'あなたが定義したように、検索が ''システム* ''で始まっていれば、すべてのレコード、 ''システム ''で始まったもの、 '' systemstools'' 、etc ... mysqlは最後に '' s'で検索語を与えるなら、 '' system''が必要なのですか? – vaso123

+0

私は理解しています。しかし、これはどうやって行えるのでしょうか? – Mikelo

+0

最後の文字または最後の文字を切り捨てるか、最初の3つの単語を使用します。わかりませんが、あなたのロジックは何ですか? – vaso123

答えて

0

これはコメントのために少し長いです。

あなたが求めているのは、通常、フルテキスト検索エンジンでは2つの方法のいずれかで実装されます。より一般的な方法は、用語の同義語のリストです。これらは、「システム」と「システム」が同じものだと言うことができます。

私が知る限り、MySQLは同義語リストをサポートしていません。シノニム値を代入するためのデータやクエリを前処理することで、煩雑な方法で自分で実装することができます。

第2のアプローチは、ステミングと呼ばれます。これは単語を "ルート"形式に変換するので、 "システム"は複数の "システム"として認識され、2つは一致します。ステミングはクエリ内でのみ適用できます。あるいは、本当に野心的な場合は、文書保管面にも適用できます。問題はあいまいである。英語(および他の言語)は、ステミングが意味をなさない例外でいっぱいです。

関連する問題