J'ai une installation assez simple du logiciel SOLR 1.4, à l'exception de quelques petits changements de configuration et de schéma.
<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>
Le principal type de champ que j'utilise pour l'indexation est le suivant :
<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>
maintenant, lorsque je fais une recherche en utilisant
"q=search+term&hl=on"
J'obtiens une mise en évidence, et des scores précis.
MAIS, pour le wildcard, je suppose que vous devez utiliser "q.alt" ? C'est le cas ? Si c'est le cas, ma requête ressemble à ceci :
"q.alt=search*&hl=on"
Lorsque j'utilise la requête ci-dessus, la mise en évidence ne fonctionne pas, et tous les scores sont "1.0".
Qu'est-ce que je fais de travers ? Est-ce que ce que je veux est possible sans contourner certaines des optimisations vraiment cool de SOLR.
Santé !