2010-03-10 8 views
7

Ich habe eine ziemlich viele Installation von SOLR 1.4 abgesehen von ein paar kleinen Konfigurations- und Schemaänderungen.Wildcard-Suche und Hervorhebung mit 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> 

Das Hauptfeld Typ I für Indizierung mit bin, ist dies:

<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> 

jetzt, wenn ich eine Suche mit

"q=search+term&hl=on" 

ausführen Ich werde Hervorhebungen und schön genaue Noten .

ABER, für Wildcard, nehme ich an, dass Sie "q.alt" verwenden müssen? Ist das wahr? Wenn dem so ist meine Frage wie folgt aussieht:

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

Wenn ich die obige Abfrage verwenden, Hervorhebung nicht funktioniert, und alle Werte sind „1,0“.

Was mache ich falsch? ist was ich will, ohne einige der wirklich coolen SOLR-Optimierungen zu umgehen.

Prost!

+1

Einige Informationen, die ich darüber gefunden habe: http://old.nabble.com/Wildcard-on-q.alt-with-Dismax-td17722791.html http://www.mail-archive.com/solr-user @ lucene.apache.org/msg21518.html es scheint jedoch, dass sie für 1.4 behoben wurden. Ich werde weiter suchen ... –

+0

cool, Prost Mauricio. Ich habe ziemlich viele Informationen zu diesem Thema gefunden, aber die Diskussionen befassen sich nie mit den Parametern, die ich verwenden muss, oder wenn ich noch Highlighting, Scoring, Rechtschreibprüfung usw. verwenden kann. Cheers aber – andy

Antwort

8

Soweit ich weiß, können Sie keine Platzhalter mit dem Dismax-Handler verwenden, siehe http://wiki.apache.org/solr/DisMaxRequestHandler#q.

Um die Wildcard-Suche zu simulieren, habe ich EdgeNGrams verwendet, indem ich einige der folgenden Anweisungen befolgt habe: http://www.lucidimagination.com/blog/2009/09/08/auto-suggest-from-popular-queries-using-edgengrams/. Eigentlich habe ich den edgytext Feldtyp nur zu schema.xml hinzugefügt und den Feldtyp des Feldes geändert, das ich durchsuchen wollte.

Hoffe, das hilft!

+0

wow, Prost, endlich !! – andy

+0

Ich bin froh, dass ich helfen konnte! Ich war ziemlich frustriert :) – jimmystormig

5

Oder Sie können die neueste Nacht bauen und edismax (ExtendedDismaxQParser) verwenden.

Es behandelt sowohl nachlaufende als auch führende Platzhalter.

+0

cool, danke Jem, ich werde das überprüfen. Übrigens, bist du auf der Solr Mailingliste Forum Sache? Es wäre gut, wenn Solr SO ein offizieller Q & A-Platz wäre ... diese Mailinglisten sind wirklich nicht intuitiv – andy