Sphinx Search / Thinking Sphinx Выдержки для связанных моделей - PullRequest
0 голосов
/ 11 октября 2019

Вопрос 1

У меня есть модель, которая имеет несколько ассоциаций, я создал ее в конфигурации индекса, которая кормит связанные модели, например, человек - это основная модель, у нее есть ассоциации, которые проиндексированы - такие как занятости_позициидокументы, собеседования и т. д.

Поэтому я бы очень хотел уточнить, что использовал поиск сфинкса, чтобы получить результат, чтобы я мог использовать выдержку из основной модели или связанной с ней модели

Поэтому, если у меня есть 10 документов, прикрепленных к человеку, и я использую поисковый термин, такой как «Java», я хочу иметь возможность определить, какая ассоциированная модель имеет совпадение с наивысшим рейтингом / или выяснить, какая ассоциированная модель послужила основой для совпадения

Вопрос 2

Я также немного озадачен - когда Sphinx использует выдержки, если поиск выполняется по полю, например, @person_job_title "java", выдержка не выделяет искомое слово.

Я подозреваю, что другие сталкивались с такой же проблемой, у кого-нибудь есть обходной путь?

1 Ответ

0 голосов
/ 14 октября 2019

Относительно вашего первого вопроса: Sphinx не предоставляет никакой информации о том, какие поля соответствуют каким ключевым словам для поиска - и хотя Thinking Sphinx понимает ассоциации, Sphinx - нет, поэтому нет другого способа сбора таких данных. Я думаю, что лучший подход здесь может заключаться в том, чтобы иметь отдельные индексы Сфинкса для каждой модели, а затем вы можете запустить поиск по всем этим моделям и получить более очевидные ответы, по которым совпадают.

Что касается второго вопроса:Я не уверен, является ли это ошибкой где-то по пути, или явной проблемой со Sphinx ... если вы можете поделиться своим полным поисковым вызовом и использованием отрывков в вашем представлении, это помогло бы с отладкой.

Если случится так, что имя поля исходит из вашего кода (а не предоставлено пользователем), вы можете попробовать использовать отдельный фрагмент и посмотреть, получится ли это лучше:

# e.g. if params[:query] is just "java", and you've got params[:field]
# or similar providing "@person_job_title"
excerpter = ThinkingSphinx::Excerpter.new 'article_core', params[:query]
excerpter.excerpt! result.person.job_title
...