Как усовершенствовать поиск на сайте?

Друзья, подскажите. Написал поиск. Например имеем статью в базе "Lorem ipsum 2". Если ввожу
буквы из названия по порядку, то статья возвращается, а если например "Lorem 2" то уже не возвращается. Как сделать чтобы возвращалась?

$('.search-field').on('keyup', function(){
		var words = $(this).val().trim();

		$.ajax({

			url: "/search",
			type: "post",
			data: {words: words},
			headers: {
            	'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content')
            },

			success: function(results) {
				$.each(results, function(key,result){
					$('.search-results > div > a').text(result.title)
				})
			}

		})	
		
	})


public function search() 
	{
		$words = Request::get('words');
		$results = Articles::where('title', 'LIKE', '%' . $words . '%') -> get();
		return $results;
	}
  • Вопрос задан
  • 248 просмотров
Пригласить эксперта
Ответы на вопрос 3
Denormalization
@Denormalization
Использовать специализированное решение для полнотекстового поиска: Elastic, Sphinx
Ответ написан
Комментировать
DJZT
@DJZT
Laravel - code for you
Сделайте разбивку поискового слова по пробелам и ищите вхождение каждого элемента с использованием AND, OR и оператора %...%.
AND или OR это вам решать, насколько не точно он будет показывать результаты

Если будет AND - то он найдёт статьи с lorem и 2 в тексте. (Пристутсвуют оба)
Если будет OR - то найдёт все с lorem и все с 2 (То есть только то или другое)

UPD

public function search() 
  {
   $items = explode(" ",Request::get('words'));

    $Articles = new Articles();

    foreach ($items as $item){
        $Articles->where('title', 'LIKE', '%' . $words . '%')
        // $Articles->orWhere('title', 'LIKE', '%' . $words . '%') тут как хотите
    }

    $results = $Articles -> get();
    return $results;
  }
Ответ написан
Fanamura
@Fanamura
Php-программист, Laravel
Не надо велосипедов, рабочий пакет:
https://github.com/nicolaslopezj/searchable
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы