автозаполнение с мышлением сфинкса - PullRequest
0 голосов
/ 02 июля 2019

когда я ищу второе слово, результат не соответствует, например, 'web' результат

["WEB MEDIA ","CREATIV WEB ","WEB SERVICES TECHNOLOGIES","iDURAR WEB AGENCY","WEB CREATION","DEV WEB SOLUTION","BIG WEB DZ","AMANA SITE WEB"]

, но для 'web m' результат

["VOISINAGE PC","DELTA SOFT","MMCOMPUTING ETS","MICROPROZ","PORTIDEE","LATICODE","CYBER WEB SERVICES","SIEGE SOCIAL","EL DALIL YALAOUI ET CIE - SIEGE COMMERCIAL""IMA"]

iПробую все примерыв интернете

ruby
@suggestions = Form.search(params[:term]).map{ |x| x[:name]}

ВЫБРАТЬ * ИЗ form_core ГДЕ СОГЛАСОВАТЬ ('web m') И sphinx_deleted = 0 ПРЕДЕЛ 0, 20 Сфинкс Найдено 23 результатов

Ответы [ 2 ]

0 голосов
/ 02 июля 2019

Я получаю лучший результат, добавляя ^ и * к

ThinkingSphinx.search('^' + params[:term] + '*', options)

, и все в порядке

0 голосов
/ 02 июля 2019

Попробуйте:

search_terms = params[:term].split(' ')
@suggestions = []
Form.all.each do |instance|
  next unless (search_terms - instance.name.join(' ')).empty?
  @suggestions << instance
end

Это создаст массив поисковых терминов и массив слов, которые ваш экземпляр формы имеет для имен.Затем он проверяет, присутствует ли каждый элемент в массиве search_terms в массиве слов, присутствующих в имени формы, и добавляет его к @suggestions, если присутствует каждое слово.

...