Как выполнить эти запросы SOLR?

У меня есть проиндексированные данные (проиндексированные с использованием solrj из rdbms), имеющие поля, связанные с банковскими операциями, такие как (образец): customerid, cust_name, accountno, сумма, позиции, pos_value, EOD_value и т. д.

Теперь я хочу выполнить поиск по данным и поисковым запросам:

  • 10 лучших акций/позиций (на основе стоимости акций)
  • топ 5 клиентов в порядке убывания суммы в банке
  • какая акция прибавила максимум за день (и детали акции)
  • минимальная стоимость акции в определенный период времени

Как можно запросить вышеуказанное в SOLR? Я прочитал плагины Function Query и solr, но не смог найти много полезной информации...

Можем ли мы выполнить фасетирование полей (количество, стоимость акций и т. д.), используя некоторые математические операции, такие как среднее значение, сумма и т. д....

Я хочу использовать пользовательский интерфейс скорости для следующего поиска, и какая настройка его окна поиска потребуется? Есть идеи???


person Shrey Shivam    schedule 01.04.2013    source источник


Ответы (2)


Solr — это высокопроизводительная система текстового поиска, основанная на Lucene, отличной библиотеке сопоставления и оценки токенов. При этом типы запросов, которые вы хотите выполнить, безусловно, будут работать с Solr тем или иным образом, но вам придется предоставить Solr все данные, которые вы хотите найти. Solr не будет вычислять для вас минимальные и максимальные средние значения. Его работа заключается в том, чтобы как можно быстрее найти, ранжировать и отсортировать ранее вычисленные значения.

В полях, которые вы указали, могут быть не все детали, которые вы ищете. Вам нужно будет проиндексировать еще немного.

Если у вас есть данные, которые вы ищете в своем индексе, следующие запросы могут дать ответ, который вы ищете, или должны дать вам подсказку о том, как их сформулировать.

10 лучших акций/позиций

q=*:* sort=stock_value DESC rows=10

Для этого требуется, чтобы stock_value было числовым и имело самую последнюю цену акции в индексе.

пять лучших клиентов

Это очень похоже.

q=*:* sort=account_value DESC rows=5

какие акции выросли максимально за день

Вам нужно будет индексировать прирост за день

q=date:1995-12-31T23:59:59.999Z sort=stock_gain  DESC rows=1

самая низкая стоимость акции за определенный период времени

q=symbol:abc123 date:[1995-12-31T23:59:59.999Z TO 2007-03-06T00:00:00Z]  sort=stock_value ASC rows=1

Подробнее о запросах даты см. в разделе Синтаксис запросов Solr.

person phisch    schedule 01.04.2013
comment
привет, фиш, спасибо за ответ. Это действительно того стоило. У меня есть еще пара сомнений по этому поводу. У меня есть пользовательский интерфейс скорости, на котором я буду показывать проиндексированные данные. Пользовательский интерфейс такой же, как и в примере распределения. Я хочу использовать фасеты (типа) для таких терминов, как 10 лучших акций и т. д. Я знаю фасеты для диапазона и полей, но как использовать фасеты в такого рода запросах? Спасибо.. - person Shrey Shivam; 01.04.2013
comment
Хава, у тебя была возможность попробовать? Что-нибудь более конкретное о том, как вы используете фасетный поиск? - person phisch; 04.04.2013

Мы реализовали то же самое в одном из наших приложений.

В Browse.vm под навигатором «div» мы создали наш собственный фасет, и когда мы нажимаем на этот фасет, он воссоздает URL-адрес вместе с параметром, упомянутым «phisch» в его ответе.

Пример: мы создали ссылку под названием «10 лучших акций» в фасетном разделе пользовательского интерфейса, и когда мы нажимаем на нее. мы создали URL-адрес, добавив параметры как

q=:&sort=stock_value DESC&rows=10

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

person Jayesh Bhoyar    schedule 04.04.2013