2016-05-24 9 views
0

Ich bin ziemlich neu bei Elasticsearch und FOSlastica, Ich möchte relevantes Ergebnis von maped Feld erhalten, die den Namen der Schule darstellen.FOS Elastica, Suche in ganzen Sätzen

meine config:

fos_elastica: 
clients: 
    default: { host: localhost, port: 9200 } 
indexes: 
    app: 
     settings: 
       index: 
        analysis: 
        analyzer: 
         czech : 
         tokenizer: standard 
         filter : [czech_stop, czech_stemmer ,lowercase, asciifolding] 
        filter: 
         czech_stop: 
         type: stop 
         stopwords: _czech_ 
         czech_stemmer: 
         type: stemmer 
         languague: czech 

     types: 
      school: 
       mappings: 
        name: 
         type: string 
         analyzer : czech 
         boost : 10 
       persistence: 
        driver: orm 
        model: Yearbook\SUBundle\Entity\School 
        provider: ~ 
        listener: 
         immediate: ~ 
        finder: ~ 

Im Namensfeld wird Name der Schule gespeichert. Ich bekomme null Ergebnisse mit der Befehlszeile fos:elastica:search school "Hi", aber die Suche nach ganzen Wort funktioniert gut fos:elastica:search school "High"

Ich triend auch verschiedene Möglichkeiten, um Ergebnisse in der Steuerung zu erhalten, aber nichts davon funktioniert. Ich denke, dass das Problem in der Konfigurationsdatei sein kann.

Ich habe kein verwandtes Problem gefunden. Danke Jungs für Ihre Antworten

Antwort

0

Gefunden Lösung,

von custom_filter EdgeNGram zu Hinzufügen confing Datei:

fos_elastica: 
clients: 
    default: { host: localhost, port: 9200 } 
indexes: 
    app: 
     settings: 
       index: 
        analysis: 
        analyzer: 
         custom_search_analyzer : 
         type  : custom 
         tokenizer: standard 
         filter : [czech_stop, czech_stemmer ,lowercase, asciifolding,standard] 
         custom_index_analyzer : 
         tokenizer: standard 
         type  : custom 
         filter : [czech_stop, czech_stemmer ,lowercase, asciifolding,standard,custom_filter] 
        filter: 
         custom_filter: 
          type: edgeNGram 
          side: front 
          min_gram: 1 
          max_gram: 20 
         czech_stop: 
         type: stop 
         stopwords: _czech_ 
         czech_stemmer: 
         type: stemmer 
         languague: czech 

     types: 
      school: 
       mappings: 
        name: 
         type: string 
         search_analyzer : custom_search_analyzer 
         index_analyzer : custom_index_analyzer 
         boost : 10 
        urlFriendly: 
         type: string 
       persistence: 
        driver: orm 
        model: Yearbook\SUBundle\Entity\School 
        provider: ~ 
        listener: 
         immediate: ~ 
        finder: ~ 

bekommen Liste der Ergebnisse in der Steuerung:

  $needle=$request->request->get('needle'); 

     $index =$this->container->get('fos_elastica.index.app.school'); 

     $searchQuery=new QueryString(); 
     $searchQuery->setParam('query',$needle); 
     $searchQuery->setDefaultOperator('OR'); 
     $searchQuery->setParam('fields',array('name','urlFriendly')); 
     $results=$index->search($searchQuery,10)->getResults(); 
Verwandte Themen