Как реализовать поиск как Переполнение стека

Я реализовал полнотекстовый поиск с помощью Сфинкса и Думающего Сфинкса. Я хочу добавить постолбцовый поиск. Некоторая вещь like:-(взятие примера Переполнения стека)

Предположим, что Вы хотите видеть actvities, связанный с Вами, просто ввести:

  user:me

Затем это возвратит результат со всеми вопросами и ответами, связанными с piemesons.

Если Вы вводите

 votes:15

затем это возвратит результат со всеми вопросами, отмеченными с наличием больше чем 15 голосов.

И если Вы вводите

  user:me votes:15

затем это возвратит все вопросы и ответы, принадлежащие Вам больше чем с 15 голосами.

Как я могу реализовать эту вещь?

Прямо сейчас мои результаты поиска основаны на полнотекстовом поиске. Как эти виды функций могут быть включены?

Какие-либо опции, доступные в Sphinx или Solr или каких-либо других поисковых системах?

6
задан Peter Mortensen 3 September 2010 в 17:06
поделиться

1 ответ

: с опцией в мыслящем сфинксе.

Прежде всего, вы должны определить эти атрибуты в определении индекса ( ознакомьтесь с разделом атрибутов здесь ).

has views_count, :as => :views, :type => :integer
has user.id, :as => :user, :type => :integer

Затем вы можете искать такие сообщения:

Post.search '', :with => {:views => 12..maxint, :user => User.first.id}

(я не уверен, есть ли более элегантная возможность указать открытые диапазоны, но 12..max_int должно быть достаточно)

Две важные вещи:

  1. , если вы хотите подсчитать связанные объекты (например, ответы), вам следует использовать кеш счетчика
  2. , если ваш «пользователь» является полиморфной ассоциацией, я рекомендую вместо этого «CRC32 (CONCAT (user_type, user_id))» of user.id
2
ответ дан 17 December 2019 в 20:28
поделиться
Другие вопросы по тегам:

Похожие вопросы: