如何在solr data config.xml中编写这些函数

时间:2016-05-11 05:41:20

标签: solr solrj solr4 solrcloud

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;

请帮帮我。

1 个答案:

答案 0 :(得分:0)

答案

没有

原因

它实际上并不是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;