Как написать такие функции в solr data config.xml

CREATE OR REPLACE FUNCTION page(IN i_app name character varying, IN i_photo_id  big int, IN i_page integer, IN i_member_id  big int, OUT o_similar_page_name character varying, OUT o_similar_page_id  big int, OUT o_similar_photo_id big int[])

DECLARE

v_limit    INTEGER := 4;

v_offset   INTEGER;

BEGIN

  SET SEARCH_PATH = '';

  v_start_time = DAYTIME();

  i_app name = UPPER(i_app name);

  IF i_app name <> 'DD' THEN

  RAISE EXCEPTION 'Enter Valid Application Name';

  END IF;

  IF i_page = 1 THEN

  v_offset := 0;

  ELSE  

  v_offset := i_page * v_limit - v_limit;

  END IF;

Помогите пожалуйста мне.


person Kavuru Venkat Pavan Kumar    schedule 11.05.2016    source источник


Ответы (1)


Отвечать

No.

Причина

На самом деле это не цель SOLR. Функции должны быть написаны на уровне БД, а данные, извлекаемые из запроса, будут храниться в SOLR для быстрого поиска.

АЛЬТЕРНАТИВНОЕ РЕШЕНИЕ

Вы можете создать функцию и вызвать ее в операторе select для индексации данных в SOLR. Примечание. Окончательные результаты, полученные из функций, можно сохранить в SOLR.

Пример:

CREATE FUNCTION CustomerLevel(p_creditLimit double) RETURNS VARCHAR(10)
    DETERMINISTIC
BEGIN
    DECLARE lvl varchar(10);

    IF p_creditLimit > 50000 THEN
 SET lvl = 'PLATINUM';
    ELSEIF (p_creditLimit <= 50000 AND p_creditLimit >= 10000) THEN
        SET lvl = 'GOLD';
    ELSEIF p_creditLimit < 10000 THEN
        SET lvl = 'SILVER';
    END IF;

 RETURN (lvl);
END

Запрос для использования в SOLR для индексации

SELECT CustomerLevel(123123123) as CustomerLevel from CustomerRating;
person SASIKUMAR S    schedule 06.06.2016