SOLR dans les matchs Substring
Question
Je ne peux pas sembler comprendre comment trouver avec SOLR matchs de sous-chaînes, j'ai compris matchs sur la base d'un préfixe afin que je puisse obtenir le jambon pour correspondre hamburger.
Comment puis-je obtenir une recherche pour « burger » pour correspondre hamburgers aussi bien? J'ai essayé Burger mais ballottés une erreur '*' ou '? pas permis comme premier caractère WildcardQuery.
Comment puis-je répondre à l'aide de sous-chaînes SOLR?
La solution
Vous pouvez activer cela, mais il sera très gourmand en ressources (par exemple pour la recherche SuffixQuery).
Voir: http: //lucene.472066.n3 .nabble.com / Leading-Wildcard-Recherche-td522362.html
Citant la liste de diffusion: contournements de travail? Imaginez faire un second index (ou en ajoutant un autre champ) avec toutes les conditions épelé à l'envers.
=>
Voir Ajouter ReverseStringFilter https://issues.apache.org/jira/browse/ LUCENE-1398
et soutien à la recherche des caractères génériques efficaces menant: https://issues.apache.org / JIRA / browse / SOLR-1321
Au issues.apache.org moment semble bas. Essayez d'utiliser par exemple cache google.
Autres conseils
Si quelqu'un finit ici après avoir cherché « apachesolr sous-chaîne », il y a une solution plus simple pour cela: https: // drupal .stackexchange.com / a / 27956/10419 ( https://drupal.stackexchange.com/questions/26024/how-can-i-make-search-with-a-substring-of-a-word )
Ajouter ngramfilter à la définition du type de texte dans schema.xml dans solr config répertoire.
<fieldType name="text" class="solr.TextField" positionIncrementGap="100">
<analyzer type="index">
<filter class="solr.EdgeNGramFilterFactory" minGramSize="3" maxGramSize="25" />
Comme indiqué plus haut dans vous pouvez utiliser des caractères génériques avec grands edismax (ExtendedDismaxQParser). Il suffit de l'essayer pour voir si elle est assez rapide.
peut également être trouvé quelques plus d'informations sur le reversedstring mentionné ci-dessus ici: solr.ReversedWildcardFilterFactory