Спружына дадзеных Solr некалькі ядраў і сховішча

У мяне Apache Solr з некалькімі ядрамі напрыклад валюта, краіна і г.д ... Такім чынам, выкарыстоўваючы Spring Data Solr я магу атрымаць інфармацыю з аднаго ядра. Я атрымаў гэтую канфігурацыю xml прама зараз Запытаная ад «валюты» стрыжня. Калі б я хацеў, каб запытаць супраць «краіны» ядро, як я магу ўсталяваць гэта?

<!-- Enable Solr repositories and configure repository base package -->





    

і сховішча вызначаецца як

@Repository
public interface CurrencyRepository extends SolrCrudRepository {

}

і з маёй службы я магу гэта зрабіць

@Override
public List getCurrencies() {
    Page currencies = (Page) currencyRepository.findAll();
    return currencies.getContent();
}

Я таксама паспрабаваў выкарыстаць <�моцны> @SolrDocument (solrCoreName = "валюта") , але гэта din't працы.

@SolrDocument(solrCoreName = "currency")
public class Currency {
    public static final String FIELD_CURRENCY_NAME = "currency_name";
    public static final String FIELD_CURRENCY_CODE = "currency_code";
    public static final String FIELD_DECIMALS = "decimals";

    @Id
    @Field(value = FIELD_CURRENCY_CODE)
    private String currencyCode;

    //currency_name,decimals
    @Field(value = FIELD_CURRENCY_NAME)
    private String currencyName;

    @Field(value = FIELD_DECIMALS)
    private String decimals;

...
...
...
}

Мне патрэбна дапамога па гэтым пытанні як мага хутчэй ... У адваротным выпадку мне давядзецца вярнуцца да RestTemplate Solution :-(

Спадзяюся, што хто-то можа дапамагчы. дзякуй GM

4

8 адказы

Думаў, што я хацеў бы падзяліцца, мы праводзім шмат часу ў апошні час налады некалькіх ядраў. Мы зрабілі ў Java, а не XML.

У рамках вясновага @configuration дадаць наступнае.

@Bean(name="solrCore1Template")
public SolrTemplate solrCore1Template() throws Exception {
    EmbeddedSolrServer embeddedSolrServer = new EmbeddedSolrServer(getCoreContainer(), "core1");
    return new SolrTemplate(embeddedSolrServer);
}

@Bean(name="solrCore2Template")
public SolrTemplate solrCore2Template() throws Exception {   
    EmbeddedSolrServer embeddedSolrServer = new EmbeddedSolrServer(getCoreContainer(), "core2");
    return new SolrTemplate(embeddedSolrServer);
}

@Bean
@Scope
public CoreContainer getCoreContainer() throws FileNotFoundException{
    String dir = ;
    System.setProperty("solr.solr.home", dir);
    CoreContainer.Initializer initializer = new CoreContainer.Initializer();
    return initializer.initialize();
}

І выкарыстоўваць кожнае выкарыстанне шаблонаў, як паказана ніжэй у класах абслугоўвання.

@Resource
private SolrTemplate solrCore1Template;

Убудаваны сервер можа быць relaced з HTTP, выкарыстоўваючы ніжэй код.

HttpSolrServer httpSolrServer = new HttpSolrServer(getSolrURL());
return new SolrTemplate(httpSolrServer, "core1");

Спадзяюся, што гэта дапамагае. Я ведаю, што гэта вельмі позна адказаць на пастаўленае пытанне.

9
дададзена

шматжыльны падтрымка праз прастору імёнаў канфігурацыі, на жаль адкрытым. Вам трэба мець асобны SolrTemplate для кожнага ядра і стварэння сховішчаў ўручную.

@Autowired 
@Qualifier("solrCurrencyTemplate")
private SolrTemplate solrCurrencyTemplate;

@Autowired
@Qualifier("solrCountryTemplate")
private SolrTemplate solrCountryTemplate;

//...

CurrencyRepository currencyRepo = new SolrRepositoryFactory(this.solrCurrencyTemplate)
  .getRepository(CurrencyRepository.class);

CountryRepository countryRepo = new SolrRepositoryFactory(this.solrCountryTemplate)
  .getRepository(CountryRepository.class);
4
дададзена
Ці з'яўляецца шматразовае ядро ​​яшчэ не падтрымліваецца? Thanx.
дададзена аўтар checklist, крыніца
Ці ёсць які-небудзь план для дадання падтрымкі некалькіх ядраў у бліжэйшай будучыні?
дададзена аўтар Aamir Yaseen, крыніца
MultiCore з multirepository зараз падтрымліваецца. См stackoverflow.com/questions/35378648/… для больш падрабязнай інфармацыі.
дададзена аўтар Nikhil Sahu, крыніца
Так, ёсць планы лепшага шмат'ядравай падтрымкі. У якасці першага кроку ёсць MulticoreSolrServerFactory , які можа быць выкарыстаны ў SolrTempate
дададзена аўтар Christoph Strobl, крыніца
Spring Data Solr 1.1.0.RC1 прапануе пашыраную падтрымку Multicore праз @EnableSolrRepositories (basePackages = { "org.springframework.data.solr.showcase"}, multicoreSupport = ісціна) , які счытвае інфармацыю ядро ​​/ калекцыі з @SolrDocument і стварае неабходны SolrTemplate S разам з сховішчам. Адзінае, што павінна прысутнічаць у канфігурацыі з'яўляецца SolrServer , які паказвае на Solr базавы шлях, як будзе дададзены збор інфармацыі.
дададзена аўтар Christoph Strobl, крыніца
@ramon_salla ў SolrTemplates створаныя multicoreSupport не зарэгістраваныя ў кантэксце, каб пазбегнуць памылак у NoUniqueBean выпадку шаблон будзе autowired. Так проста стварыць шаблон ў вашым кантэксце, выкарыстоўваючы асобнік solrServer і выкарыстоўваць гэта адзін для карыстацкіх рэалізацый.
дададзена аўтар Christoph Strobl, крыніца
@ChristophStrobl свой шлях працы, але як autowire ў Проппер solrTemplate для пэўнай калекцыі? Я заўсёды сканчаю з спружынным выключэннем «не кваліфікаваны боб не знойдзены» ... Ствараюцца solrTemplate бабы? Дзякуючы.
дададзена аўтар ramon_salla, крыніца

шматжыльны падтрымка праз прастору імёнаў канфігурацыі, на жаль адкрытым. Вам трэба мець асобны SolrTemplate для кожнага ядра і стварэння сховішчаў ўручную.

@Autowired 
@Qualifier("solrCurrencyTemplate")
private SolrTemplate solrCurrencyTemplate;

@Autowired
@Qualifier("solrCountryTemplate")
private SolrTemplate solrCountryTemplate;

//...

CurrencyRepository currencyRepo = new SolrRepositoryFactory(this.solrCurrencyTemplate)
  .getRepository(CurrencyRepository.class);

CountryRepository countryRepo = new SolrRepositoryFactory(this.solrCountryTemplate)
  .getRepository(CountryRepository.class);
4
дададзена
Ці з'яўляецца шматразовае ядро ​​яшчэ не падтрымліваецца? Thanx.
дададзена аўтар checklist, крыніца
Ці ёсць які-небудзь план для дадання падтрымкі некалькіх ядраў у бліжэйшай будучыні?
дададзена аўтар Aamir Yaseen, крыніца
MultiCore з multirepository зараз падтрымліваецца. См stackoverflow.com/questions/35378648/… для больш падрабязнай інфармацыі.
дададзена аўтар Nikhil Sahu, крыніца
Так, ёсць планы лепшага шмат'ядравай падтрымкі. У якасці першага кроку ёсць MulticoreSolrServerFactory , які можа быць выкарыстаны ў SolrTempate
дададзена аўтар Christoph Strobl, крыніца
Spring Data Solr 1.1.0.RC1 прапануе пашыраную падтрымку Multicore праз @EnableSolrRepositories (basePackages = { "org.springframework.data.solr.showcase"}, multicoreSupport = ісціна) , які счытвае інфармацыю ядро ​​/ калекцыі з @SolrDocument і стварае неабходны SolrTemplate S разам з сховішчам. Адзінае, што павінна прысутнічаць у канфігурацыі з'яўляецца SolrServer , які паказвае на Solr базавы шлях, як будзе дададзены збор інфармацыі.
дададзена аўтар Christoph Strobl, крыніца
@ramon_salla ў SolrTemplates створаныя multicoreSupport не зарэгістраваныя ў кантэксце, каб пазбегнуць памылак у NoUniqueBean выпадку шаблон будзе autowired. Так проста стварыць шаблон ў вашым кантэксце, выкарыстоўваючы асобнік solrServer і выкарыстоўваць гэта адзін для карыстацкіх рэалізацый.
дададзена аўтар Christoph Strobl, крыніца
@ChristophStrobl свой шлях працы, але як autowire ў Проппер solrTemplate для пэўнай калекцыі? Я заўсёды сканчаю з спружынным выключэннем «не кваліфікаваны боб не знойдзены» ... Ствараюцца solrTemplate бабы? Дзякуючы.
дададзена аўтар ramon_salla, крыніца

Spring Data зараз падтрымлівае некалькі ядраў з іх адпаведнымі сховішчамі.

Сцяг multicoreSupport павінен быць дакладна ў @EnableJpaRepository анатаваньня і адпаведны дакумент павінен быць сказана, што ядро ​​яны належаць. як:

@SolrDocument(solrCoreName = "currency")
public class Currency
{
   //attributes
}

іншы клас павінен быць

@SolrDocument(solrCoreName = "country")
public class Country
{
   //attributes
}

Адпаведныя Сховішчы павінны ведаць, што POJO яны працуюць.

public interface CurrencyRepository extends SolrCrudRepository
{
}

і

public interface CountryRepository extends SolrCrudRepository
{
}

і configuration should be

@Configuration
@EnableSolrRepositories(value = "com.package.name",multicoreSupport = true)
public class SolrConfig
{
    @Bean
    public SolrServer solrServer() throws Exception
    {
        HttpSolrServerFactoryBean f = new HttpSolrServerFactoryBean();
        f.setUrl("http://localhost:8983/solr");
        f.afterPropertiesSet();
        return f.getSolrServer();
    }

    @Bean
    public SolrTemplate solrTemplate(SolrServer solrServer) throws Exception
    {
        return new SolrTemplate(solrServer());
    }
}
1
дададзена

Spring Data зараз падтрымлівае некалькі ядраў з іх адпаведнымі сховішчамі.

Сцяг multicoreSupport павінен быць дакладна ў @EnableJpaRepository анатаваньня і адпаведны дакумент павінен быць сказана, што ядро ​​яны належаць. як:

@SolrDocument(solrCoreName = "currency")
public class Currency
{
   //attributes
}

іншы клас павінен быць

@SolrDocument(solrCoreName = "country")
public class Country
{
   //attributes
}

Адпаведныя Сховішчы павінны ведаць, што POJO яны працуюць.

public interface CurrencyRepository extends SolrCrudRepository
{
}

і

public interface CountryRepository extends SolrCrudRepository
{
}

і configuration should be

@Configuration
@EnableSolrRepositories(value = "com.package.name",multicoreSupport = true)
public class SolrConfig
{
    @Bean
    public SolrServer solrServer() throws Exception
    {
        HttpSolrServerFactoryBean f = new HttpSolrServerFactoryBean();
        f.setUrl("http://localhost:8983/solr");
        f.afterPropertiesSet();
        return f.getSolrServer();
    }

    @Bean
    public SolrTemplate solrTemplate(SolrServer solrServer) throws Exception
    {
        return new SolrTemplate(solrServer());
    }
}
1
дададзена

З Spring Data Solr 1.1.0.RC1 некалькі ядраў працуе, як апісана Крыстафам Штробль з кодам <> @EnableSolrRepositories . Ён таксама працуе з канфігурацыяй xml мноствам шмат'ядравы-падтрымка = «праўдзівы» .






    

1
дададзена



    
    
        
            ${solr.index.customer}
            ${solr.index.task}
        
    



    



1
дададзена



    
    
        
            ${solr.index.customer}
            ${solr.index.task}
        
    



    



1
дададзена