Задача нечеткого поиска Railsinking_sphinx - PullRequest
0 голосов
/ 04 февраля 2011

Я пытаюсь настроить think_sphinx для поля поиска с автоматическим предложением.При каждом нажатии клавиш я выполняю поиск сфинксов в моей базе данных текущего текстового значения в поле.Я установил min_infix_len на 3, я не хочу, чтобы предложения начинали появляться, пока не набраны хотя бы 3 символа.Проблема возникает с запросами из нескольких слов.Несмотря на установку: match_mode =>: фраза, каждое новое слово, которое я набираю, по-видимому, рассматривается как отдельное ключевое слово в поиске сфинкса, при этом необходимо соблюдать min_infix_len, равное 3.

Так что, если я набираю "Lorem Ipsum", Я получаю авто-предложения для" Lor "," Lore "и" Lorem ".Тогда я не получаю результатов для "Lorem I" и "Lorem Ip".Затем, когда я нажимаю «Lorem Ips», я снова получаю результаты.

В чем же дело?Если это не то, для чего: match_mode =>: фраза, для чего она нужна?

Ответы [ 2 ]

1 голос
/ 06 мая 2011

Вы можете расширить класс String этим методом, который преобразует строку из одного или нескольких слов в строку, доступную для поиска по звездам

def to_star_search
  "*#{self.strip.gsub(/ +/, '* *')}*"
end
0 голосов
/ 04 февраля 2011

Я почти уверен, что min_infix_len оказывает влияние только при индексации данных в Sphinx. Это не относится вообще при поиске. Итак: min_infix_len применяется для каждого слова, а не для фраз.

...