1

以下のようなクエリがあります。

SELECT prd_id FROM products WHERE MATCH (prd_search_field) AGAINST ('+gul* +yetistiren* +adam*' in boolean mode);

これは、「gul」を含む行を返しません。

http://dev.mysql.com/doc/refman/5.0/en/fulltext-boolean.html ドキュメントにはこう書かれています。

次に、「+word +the*」の検索は、「+word +the」の検索よりも少ない行を返す可能性があります。前者のクエリはそのまま残り、単語と the* (the で始まる単語) の両方が存在する必要があります。ドキュメントで。後者のクエリは +word に変換されます (存在する単語のみが必要です)。これは短すぎてストップワードであり、どちらの条件でも無視されるのに十分です。

したがって、各単語の後に * を使用するため、短すぎる単語条件を私の状況に適用してはならないことを理解しました。これの何が問題なのですか?

解決策として、以下のクエリを使用しますが、遅いため、別の解決策を見つける必要があります。任意のアイデアをいただければ幸いです? 前もって感謝します..

SELECT prd_id FROM products WHERE 1 AND MATCH (prd_search_field) AGAINST ('+yetistiren* +adam*' in boolean mode) AND prd_search_field LIKE '%gul%';

注意として、すべての共有ホスティング環境で ft_min_word_length=4 がデフォルトとして設定されており、これを変更することはできません。

4

0 に答える 0