0

そのため、会社のリストを検索して、その特定の会社がサイトに登録されているかどうかを確認するフォームがあります。

会社名が 3 文字以下の場合、データベースにあることがわかりますが、結果は表示されません。

たとえば、会社名が「ABB Eutech」で、ABB を検索する場合、検索は 0 を返します。

ただし、Eutech を検索すると、検索結果が返されます。

私が使用しているコードは次のとおりです。

    <?php 
        $out = '';
        if ((isset($_POST['companysearch-name'])) && ($_POST['companysearch-name']==NULL)) {
            $out .= '<h3>No matches. Please enter a company name.</h3>';
        } else if (isset($_POST['companysearch-name'])) {
            $queryString = htmlspecialchars($_POST['companysearch-name'],ENT_QUOTES);                   
            if(strlen($queryString) >0) {
                $query = $wpdb->get_results("SELECT DISTINCT (company_name) FROM wp_companies WHERE MATCH (company_name) AGAINST ('$queryString')");
                $searchStr = "%" . $queryString . "%";
                $searchStr = str_replace(" ","%",$searchStr);
                $numresults = count($query);
                if($query) {
                    $out .= '<div><ul>';
                    foreach($query as $result):

                    $out .= '<li>'.$result->company_name.'</li>';
                    endforeach;
                    $out .= '</ul></div>';
                    $out .= "<p>Is your company on this list? If YES, your company already has the scheme in place and you can setup a donation right now.</p>";
                    $out .= '<a class="button" href="/donate/"><span>Start Giving</span><b></b></a>';
                } else {
                    $out .= '<h3>No matches found.</h3>';
                    $out .= "<p>Can't find your employer? They may have only just signed up - <a href='/contact-us/'>contact us</a> and we'll check it out for you.</p>";
                }
            }
        }
    ?>

どんな助けでも大歓迎です!……お手柔らかに、初めてです。

4

1 に答える 1

4

3 文字以下の単語は、デフォルトで MySQL のフルテキスト インデックスから除外されます。

索引付けされる単語の最小長と最大長は、ft_min_word_len および ft_max_word_len システム変数によって定義されます。(セクション5.1.3「サーバーシステム変数」を参照してください。) デフォルトの最小値は 4 文字です。デフォルトの最大値はバージョンに依存します。いずれかの値を変更した場合は、FULLTEXT インデックスを再構築する必要があります。たとえば、3 文字の単語を検索可能にする場合は、オプション ファイルに次の行を追加して ft_min_word_len 変数を設定できます。 [mysqld] ft_min_word_len=3

次にサーバーを再起動し、FULLTEXT インデックスを再構築します。特に、このリストに続く手順の myisamchk に関する注意事項に注意してください。

http://dev.mysql.com/doc/refman/5.0/en/fulltext-fine-tuning.html

于 2012-07-10T17:36:43.067 に答える