Функция не ищет конкретное слово - PullRequest
0 голосов
/ 03 марта 2010

Это довольно странно, но моя функция поиска может искать любое слово, кроме слова "точильщик" из моей таблицы предметов. Я перепробовал все, но, похоже, это слово не ищется. Может кто-нибудь помочь мне, пожалуйста?

CREATE FULLTEXT INDEX item_name_other_name_desc_index 
    ON item (name,other_name,description) 

public static function Search($string) 
{    

    $delims = ',.; '; 
        $word = strtok($string,$delims); 
        while($word) 
        { 

           $result['accepted'][] = $word;                    
           $word = strtok($delims); 

        } 

          $string = implode(" ", $result['accepted']); 

    $sql = 'SELECT item_id,name,other_name,description,price,discounted_price, thumbnail_photo,large_photo 
    FROM item 
    WHERE  
    MATCH(name,other_name,description) 
    AGAINST(:string)' ; 
    $parameters = array(':string' => $string); 
    $result['items'] = DB::GetAll($sql,$parameters); 
    return $result; 
} 

Названия предметов: Моторная угловая шлифмашина 9 в 15 AMP
8 В Bench Grinder
1/4 In Angle Die Grinder
7 в угловых шлифовальных машинах
3 в прямой мясорубке
Ryobi HP512K аккумуляторная дрель-шуруповерт
Аэрозольная краска с 6 пакетами
Бесконтактный тестер напряжения

Когда я изменяю вышеизложенное на:
Моторная угловая шлифмашина 9 в 15 AMP
8 в скамейке Grind
1/4 In Angle Die Grind
7 In Angle Grind
3 в прямом помоле
Ryobi HP512K аккумуляторная дрель-шуруповерт
Аэрозольная краска с 6 пакетами
Бесконтактный тестер напряжения

и я ищу Grinder, запись => 9 В 15 AMP Motor Angle Grinder отображается.

Ответы [ 2 ]

2 голосов
/ 03 марта 2010

По умолчанию в полнотекстовом поиске mysql слово, встречающееся более чем на 50%, или в строках является стоп-словом (http://dev.mysql.com/doc/refman/5.1/en/fulltext-natural-language.html).Попробуйте выполнить поиск в логическом режиме (http://dev.mysql.com/doc/refman/5.1/en/fulltext-boolean.html), где у вас нет порога 50%.

0 голосов
/ 03 марта 2010

Изменится ли значение, если в тексте будет перемещено слово Grinder, поэтому «15 AMP Motor Angle Grinder» будет «15 AMP Motor Angle Grinder Test»? Я спрашиваю об этом, потому что Grinder всегда является последним произведением имени.

Я не эксперт по полнотекстовому поиску, но с этого я и начал бы.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...