J'indexé dans les noms de magasin Solr commeSolr requête de recherche ne considère pas un caractère spécial
H&M
Lotte & Anna
fan & more
Tele2
Pure Tea
je les deux questions suivantes (avec importance en priorité)
si je recherche " H & M "Je n'obtiendrai jamais de résultat. Si je cherche "te & Ann" j'obtiens les résultats attendus.
si je recherche « te & un » les résultats que je reçois sont Télé2 et thé pur alors que je me serais attendu à « Lotte & Anna » apparaît d'abord dans la liste.
Il semble que le caractère & ne soit pas pris en compte. Qu'est-ce que je fais mal ici?
Ce sont mes analyseurs pour le domaine spécifique (à la fois la requête et l'index)
<fieldType name="text_general" class="solr.TextField" positionIncrementGap="100">
<analyzer type="index">
<tokenizer class="solr.StandardTokenizerFactory"/>
<filter class="solr.StandardFilterFactory"/>
<filter class="solr.LowerCaseFilterFactory"/>
<filter class="solr.EdgeNGramFilterFactory" minGramSize="2" maxGramSize="15" side="front"/>
</analyzer>
<analyzer type="query">
<tokenizer class="solr.StandardTokenizerFactory"/>
<filter class="solr.StandardFilterFactory"/>
<filter class="solr.LowerCaseFilterFactory"/>
</analyzer>
</fieldType>
Ok, donc le 1er problème a été résolu avec le WordDelimiterFilterFactory
spécifiant & => ALPHA
dans le wdfftypes.txt
et le changement de commutation du StandardTokenizerFactory
au WhitepsaceTokenizerFactory
<tokenizer class="solr.WhitespaceTokenizerFactory"/>
<filter class="solr.WordDelimiterFilterFactory" types="wdfftypes.txt"/>
(édité à la fois dans l'analyseur et dans la requête).
La deuxième question demeure. Dans le debugQuery je reçois le
"debug": {
"rawquerystring": "te & an",
"querystring": "te & an",
"parsedquery": "text:te text:an",
"parsedquery_toString": "text:te text:an",
"explain": {
"": "\n0.8152958 = (MATCH) product of:\n 1.6305916 = (MATCH) sum of:\n 1.6305916 = (MATCH) weight(text:te in 498) [DefaultSimilarity], result of:\n 1.6305916 = score(doc=498,freq=1.0 = termFreq=1.0\n), product of:\n 0.8202942 = queryWeight, product of:\n 5.300835 = idf(docFreq=87, maxDocs=6491)\n 0.15474811 = queryNorm\n 1.9878132 = fieldWeight in 498, product of:\n 1.0 = tf(freq=1.0), with freq of:\n 1.0 = termFreq=1.0\n 5.300835 = idf(docFreq=87, maxDocs=6491)\n 0.375 = fieldNorm(doc=498)\n 0.5 = coord(1/2)\n"
},
suivant ainsi, que dois-je modifier pour que les poids se déplacent en faveur du résultat désiré?