Использование полнотекстового поиска в Rails 3 Sunspot

Поэтому я внедрил гем sunspot_rails в свое приложение, чтобы использовать мощную поисковую систему Solr. Недавно я проверил railscast Райана о полнотекстовом поиске и заметил, что он использует дополнительные параметры в его поисковых запросах, такие как "-", для обозначения чего-то, что НЕ должно включаться в полнотекстовый поиск.

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

Я думаю, что в идеале я хотел бы сделать сокращенную версию, похожую на шпаргалку уценки Github для моих форм поиска, на которую пользователи могут быстро ссылаться.


person Noz    schedule 21.08.2012    source источник


Ответы (1)


Sunspot использует Solr DisMax Query Parser, который имеет очень простой синтаксис запросов. По большей части он предназначен для гибкого разбора пользовательских запросов.

DisMax распознает три специальных символа: +, - и ". Из документации:

[DisMax] предназначен для поддержки необработанных входных строк, предоставленных пользователями, без специального экранирования. Символы '+' и '-' рассматриваются как «обязательные» и «запрещенные» модификаторы для последующих терминов. Текст, заключенный в сбалансированные кавычки '"', обрабатывается как фразы, любой запрос, содержащий нечетное количество символов кавычек, оценивается так, как если бы символов кавычек вообще не было.

Есть несколько других «закулисных» опций для настройки релевантности совпадающих документов. Например, «минимальное соответствие» указывает количество или пропорцию «необязательных» полей (т. е. без префикса - или +), которые должны присутствовать. А также варианты повышения соответствия терминов в определенных полях или совпадений терминов в непосредственной близости друг от друга и так далее.

В Sunspot все они представлены в параметре options метода fulltext или как методы внутри блока, предоставленного этому методу.

person Nick Zadrozny    schedule 21.08.2012
comment
Чтобы немного расширить это, nickzadrozny написал сообщение в блоге на тему здесь - person Noz; 22.08.2012
comment
А, так я и сделал! Рад, что ты нашел это полезным, Сайл. Я должен вести блог чаще… - person Nick Zadrozny; 27.08.2012
comment
Честно говоря, я только сейчас понял, что вы двое были одним и тем же человеком, так как сначала я только взглянул на ваше ТАКОЕ имя. Забавно, как это получилось. Я думаю, это просто делает вас экспертом в предметной области :) - person Noz; 27.08.2012