Как бы вы отсортировали массив в Ruby на основе формулы (например, поисковый рейтинг)? - PullRequest
0 голосов
/ 30 июля 2010

Итак, я создаю быстрый и грязный поиск в моем первом приложении rails.Я делаю запрос и возвращаю список объектов.например,

@articles = Article.find_by_sql("select * from article where title like "%test%" or title like "%foobar%")

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

Вот концептуальный псевдокод, который я пытаюсь реализовать.объекта статьи.)

Есть идеи, как это можно отсортировать?

Ответы [ 2 ]

2 голосов
/ 30 июля 2010

Если ничего не помогает, вы можете сделать:

@articles.sort! {|x,y| search_fitness_function(y) <=> search_fitness_function(x)}
1 голос
/ 30 июля 2010

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

http://dev.mysql.com/doc/refman/5.1/en/fulltext-natural-language.html

По умолчанию или с ЕСТЕСТВЕННЫМ Модификатор ЯЗЫКОВОГО РЕЖИМА, МАТЧ () функция выполняет естественный язык поиск строки против текста коллекция. Коллекция представляет собой набор один или несколько столбцов, включенных в Индекс FULLTEXT. Строка поиска задано в качестве аргумента ПРОТИВ (). MATCH () для каждой строки таблицы возвращает значение релевантности; это мера сходства между поиском строка и текст в этой строке в столбцы, названные в списке MATCH ().

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...