PHP preg_split поиск пропускает первое слово
Я использую preg_split, чтобы найти некоторые результаты, и он отлично работает, за исключением (как ни странно) первого слова.
Например, если есть элемент под названием "синий телефон" и я ищу "случайный телефон", я ничего не получаю, однако, если я ищу "случайный телефон" (или "что-то ph", "что-то случайный телефон" и т. Д.), То это находит "телефон синий".
Я искал различные выражения и пробовал их (например, @[\W]+@, /[\s,]+/ и т. Д.). Но ничего не помогает. Я могу только предположить, что первая попытка найти предмет (с полной строкой) - это все испортить, но понятия не имею, как. Совершенно новый для этого! Спасибо за любую помощь
РЕДАКТИРОВАТЬ: забыл отметить, что просто поиск "телефон" также не работает.
function find_by_location_or_name($where) {
// first try complete
$this->db->where('items_location', $where);
$this->db->or_like('items_name', $where);
$query = $this->db->from('items_table')->get();
// if nothing, break it up, try again
if( !$query->num_rows) {
$where_like = preg_split('/ /', $where);
$tryagain = false;
foreach($where_like as $like) {
if(! $tryagain) {
$this->db->like('items_location', $like);
} else {
$this->db->or_like('items_name', $like);
}
$tryagain = true;
}
// Do the query
$query = $this->db->from('items_table')->get();
}
ОБНОВЛЕНИЕ: Спасибо за помощь всем! В итоге это сработало:
// first try complete
$this->db->where('items_location', $where);
$this->db->or_where('items_name', $where);
$query = $this->db->from('items_table')->get();
// if nothing, break it up, try again
if( !$query->num_rows) {
$where_like = preg_split('/ /', $where);
$tryagain = false;
foreach($where_like as $like) {
if(! $tryagain) {
$this->db->like('items_location', $like);
$this->db->or_like('items_name', $like);
} else {
$this->db->like('items_name', $like);
}
$tryagain = true;
}
1 ответ
Я посмотрел на ваш код. Вместо preg_split вы должны сделать полнотекстовый индекс и передать всю строку MySQL. Пусть MySQL найдет его для вас. Это именно то, что вам нужно.
Пожалуйста, посмотрите на: http://dev.mysql.com/doc/refman/5.0/en/fulltext-search.html
Эта ссылка более понятна с примерами: http://www.bakale.com/mysql/myfultext.htm