1

サイトの基本検索に問題があります。語順が完全に一致する場合にのみ一致が検出されるためです。

たとえば、Shoes Red を検索しても、Red Shoes の結果は表示されません。

Red Shoe Laces を検索しても、Red Laces の結果は表示されません (靴という単語はこの順序から外れているため)。以下は、検索ボックスが使用していると思われるコードです。この検索を「緩める」方法を誰か教えてもらえますか?

これが現在のコードです: 私の php コードの知識は基本的なものです。

case 'search':
          if (intval($filter) != 0) {       
              $filter = JString::strtolower($filter);
              $id = intval($filter);
              $search .= $temp."(a.id = $id OR LOWER(a.ad_headline) LIKE '%".$this->_db->getEscaped($filter,true)."%' OR LOWER(a.ad_text) LIKE '%".$this->_db->getEscaped($filter,true)."%')";
          } else {
              $filter = JString::strtolower($filter);
              $search .= $temp."(LOWER(a.ad_headline) LIKE '%".$this->_db->getEscaped($filter,true)."%' OR LOWER(a.ad_text) LIKE '%".$this->_db->getEscaped($filter,true)."%')";
          }
          break;
          }
          }
      }
      return $search;
 }

ここに何かアイデアはありますか?

4

2 に答える 2

1

Full-Text Search関数 を使用する必要があります

以下の構文を参照してください。

MATCH(field_name1,field_name2)AGAINST(value)

あなたの文脈では、以下のようなもの:

$search .= $temp."MATCH(a.ad_headline,a.ad_text) AGAINST ('".$this->_db->getEscaped($filter,true)."')";

詳しくはリンク参照

于 2013-02-12T08:57:47.777 に答える