Domanda

Ho una più o meno alla vaniglia installa di SOLR 1,4 a parte alcune piccole modifiche di configurazione e di schema.

<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 è questa:

<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, sto assumendo è 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".

Che cosa sto facendo di sbagliato? è quello che voglio possibile senza bypassare alcune delle ottimizzazioni davvero cool Solr.

evviva!

È stato utile?

Soluzione

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

Per simulare jolly ricerca ho usato EdgeNGrams seguito alcune delle istruzioni qui: http://www.lucidimagination.com/blog/2009/09/08/auto-suggest-from-popular-queries-using-edgengrams/ . In realtà mi è aggiunto solo il fieldType edgytext per schema.xml e cambiato il fieldType del campo che volevo per la ricerca.

Spero che questo aiuti!

Altri suggerimenti

In alternativa, è possibile ottenere l'ultima nightly build e utilizzare edismax (ExtendedDismaxQParser).

Si occupa sia di traino e caratteri jolly principali.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top