2

私はMysqlのMatchAgainst検索を探していました。結果は奇妙です。たとえば、エントリ「education」を持つテーブル属性があり、「edu」を検索(一致を使用)すると、それが見つかります。しかし、「educ」を検索しても結果は返されません。「教育」までは結果を返しません。したがって、単語全体にのみ一致するか、1つの単語に3文字以下が一致する場合にのみ一致します。

検索語が属性内の単語のサブセットである場合に結果が返されるように、それを改善する方法はありますか?たとえば、上記の例を使用して、「educat」を検索すると、「Education」を含む行が返されます。

4

2 に答える 2

0

演算子を照合IN BOOLEAN MODEして使用することで、正確にやりたいことができます。*

例えば:

 ... MATCH(thing) AGAINST ('+educat*' IN BOOLEAN MODE)...

は、一致項を含む+の値のみを含めるように一致に指示しますthing。この場合は、「」で始まるすべてのインデックス付きの値ですeducat(ブールモードの詳細については、ここを参照してください)。

余談ですが、MySQLの全文検索では、デフォルトで3文字以下の単語のインデックスが作成されないため、「edu」との一致が思ったとおりに機能していないと思われます。ft_min_word_len変数の値を見て、それが当てはまるかどうかを確認してください。

于 2012-11-12T16:32:08.243 に答える
0

同じ単語または文字で始まる任意の単語を検索するマーク%a(a =あなたの単語または文字)を使用できます。開始および/または途中の単語の一部を検索する%a%を使用できます。単語と最後の単語または文字で終わる%を使用できます

于 2012-11-12T16:32:52.683 に答える