2010-03-10 17 views
7

Ho un'installazione quasi blanda di SOLR 1.4, a parte poche modifiche di configurazione e dello schema.Ricerca con caratteri jolly e evidenziazione con Solr 1.4

<requestHandler name="standard" class="solr.SearchHandler" default="true"> 
    <!-- default values for query parameters --> 
    <lst name="defaults"> 
     <str name="defType">dismax</str> 
     <str name="echoParams">explicit</str> 
     <str name="qf"> 
      text 
     </str> 
     <str name="spellcheck.dictionary">default</str> 
     <str name="spellcheck.onlyMorePopular">false</str> 
     <str name="spellcheck.extendedResults">false</str> 
     <str name="spellcheck.count">1</str> 
    </lst> 
</requestHandler> 

Il tipo di campo principale che sto utilizzando per l'indicizzazione è questo:

<fieldType name="textNoHTML" class="solr.TextField" positionIncrementGap="100"> 
     <analyzer type="index"> 
      <charFilter class="solr.HTMLStripCharFilterFactory" /> 
      <tokenizer class="solr.WhitespaceTokenizerFactory"/> 
      <filter class="solr.StopFilterFactory" 
        ignoreCase="true" 
        words="stopwords.txt" 
        enablePositionIncrements="true" 
      /> 
      <filter class="solr.WordDelimiterFilterFactory" generateWordParts="1" generateNumberParts="1" catenateWords="1" catenateNumbers="1" catenateAll="0" splitOnCaseChange="1"/> 
      <filter class="solr.LowerCaseFilterFactory"/> 
      <filter class="solr.SnowballPorterFilterFactory" language="English" protected="protwords.txt"/> 
     </analyzer> 
     <analyzer type="query"> 
      <tokenizer class="solr.WhitespaceTokenizerFactory"/> 
      <filter class="solr.SynonymFilterFactory" synonyms="synonyms.txt" ignoreCase="true" expand="true"/> 
      <filter class="solr.StopFilterFactory" 
        ignoreCase="true" 
        words="stopwords.txt" 
        enablePositionIncrements="true" 
      /> 
      <filter class="solr.WordDelimiterFilterFactory" generateWordParts="1" generateNumberParts="1" catenateWords="0" catenateNumbers="0" catenateAll="0" splitOnCaseChange="1"/> 
      <filter class="solr.LowerCaseFilterFactory"/> 
      <filter class="solr.SnowballPorterFilterFactory" language="English" protected="protwords.txt"/> 
     </analyzer> 
    </fieldType> 

ora, quando effettuo una ricerca utilizzando

"q=search+term&hl=on" 

vengo evidenziando, e curato punteggi precisi .

MA, per carattere jolly, presumo sia necessario utilizzare "q.alt"? È vero? Se è così la mia domanda è simile al seguente:

"q.alt=search*&hl=on" 

Quando uso la query di cui sopra, l'evidenziazione non funziona, e tutti i punteggi sono "1.0".

Cosa sto sbagliando? è ciò che voglio possibile senza aggirare alcune delle ottimizzazioni SOLR davvero interessanti.

evviva!

+1

Alcune informazioni che ho trovato su questo: http://old.nabble.com/Wildcard-on-q.alt-with-Dismax-td17722791.html http://www.mail-archive.com/solr-user @ lucene.apache.org/msg21518.html tuttavia sembrerebbe che siano stati corretti per 1.4. Continuerò a cercare ... –

+0

cool, evviva Mauricio. Ho trovato un sacco di informazioni su questo argomento, ma le discussioni non risolvono mai quali parametri ho bisogno di usare, o se posso ancora usare l'evidenziazione, il punteggio, il controllo ortografico ecc. Evviva però – andy

risposta

8

Da quello che so non è possibile utilizzare i caratteri jolly con il gestore dismax, vedere http://wiki.apache.org/solr/DisMaxRequestHandler#q.

Per simulare la ricerca con caratteri jolly ho utilizzato EdgeNGram seguendo alcune delle istruzioni qui: http://www.lucidimagination.com/blog/2009/09/08/auto-suggest-from-popular-queries-using-edgengrams/. In realtà ho solo aggiunto il fieldtype edgytext a schema.xml e cambiato il fieldtype del campo che volevo cercare.

Spero che questo aiuti!

+0

wow, evviva, finalmente !! – andy

+0

Felice di poterti aiutare! Ero abbastanza frustrato anch'io :) – jimmystormig

5

Oppure puoi prendere l'ultima build notturna e usare edismax (ExtendedDismaxQParser).

Gestisce sia i caratteri jolly finali che quelli iniziali.

+0

fantastico, grazie Jem, lo controllerò. A proposito, sei sulla lista delle mailing list Solr? Sarebbe bello se Solr riuscisse a far sì che fossero un luogo di domande e risposte ufficiali ... quelle mailing list sono davvero poco intuitive – andy

Problemi correlati