Переход от мыслящего сфинкса к солнечному пятну Solr - PullRequest
0 голосов
/ 08 декабря 2011

Мы переходим из Thinking Sphinx в Sunspot по нескольким причинам.Я должен переписать логику поиска, однако я не уверен, как преобразовать следующее:

Я хочу преобразовать поиск: любой в Sunspot.Это означает, что не все ключевые слова должны присутствовать для соответствия объекта.(Подойдет любое ключевое слово, и будет упорядочено по релевантности).Однако я не могу найти его в документации Sunspot.

# Thinking Sphinx

search_result = Business.search([attributes[:name],attributes[:address]], match_mode: :any)

Я также ищу способ легко добавлять стоп-слова через Sunspot в Solr.Thinking Sphinx предоставляет способ указать это в yml.Однако в Sunspot :: Rails yml нет эквивалента.

1 Ответ

2 голосов
/ 09 декабря 2011

Минимальное совпадение в Sunspot

не все ключевые слова должны присутствовать для соответствия объекта

В Solr это концепция «минимум должен соответствовать». Вы можете увидеть некоторые предыдущие ответы, мою статью в блоге и вики-документы Solr на эту тему:

Запрос, подобный тому, что вы написали выше, может выглядеть следующим образом ...

@search = Business.search do
  fulltext query_string, :minimum_match => 0
end
@businesses = @search.results

1026 * Игнорируемые слова * В качестве стоп-слов я мог бы начать с рекомендации , а не использовать их. Алгоритм Solr DisMax должен выполнять достаточную работу, игнорируя общие термины для сортировки результатов. Единственный раз, когда я действительно нуждался в стоп-словах, было при создании облаков слов путем огранки текстовых полей. Так что если вам действительно нужны стоп-слова, добавьте StopFilterFactory в блок analyzer вашего текстового поля. Создайте соответствующий файл stopwords.txt в каталоге solr/conf (в том же каталоге, что и ваш schema.xml). (Конфиги Sunspot должны по умолчанию идти с образцом stopwords.txt файла.)

...