2014-09-16 5 views
0

J'ai un site de commerce électronique où je suis en train d'implémenter Solr (en utilisant la bibliothèque Solarium) et il y a des noms de produits et des descriptions qui contiennent des guillemets (généralement pour les pouces). Avant de commencer à saisir la partie analyseur et tokenizer de Solr, j'ai simplement assigné le type de données text_en_splitting aux champs qui contiendraient ces données. Si quelqu'un cherche la phrase - bleu 1 " - le double guillemet est enlevé et les 10 premiers résultats renvoyés ne sont pas nécessairement des liants Les résultats retournés semblent correspondre au mot bleu et au chiffre 1 (ils sont ' En examinant l'analyse de la requête dans l'admin Solr, je vois que les guillemets doubles sont supprimés de WordDelimiterFilterFactory. J'aime WordDelimiterFilterFactory pour d'autres raisons (comme traiter la phrase post-it), donc j'essaie de Est-ce qu'il y a un meilleur moyen d'indexer et d'interroger les champs qui contiennent des guillemets qui devraient être gardés en place lors de la recherche (parce qu'ils signifient quelque chose)?Solr et rechercher des phrases avec des guillemets

Répondre

0

Ce que j'ai fini par faire était d'ajouter un filtre de remplacement avant le délimiteur de mot et utilisé le mot inch

<filter class="solr.PatternReplaceFilterFactory" pattern='(\d)"' replacement='$1 inch' replace="all"/> 
0

Solr Query Parsers (tels que DisMax) utilisent un appel à

SolrPluginUtils.stripUnbalancedQuotes(userQuery)) 

pour supprimer les citations asymétriques. Les guillemets équilibrés sont pour les requêtes d'expressions.

Donc, vous devriez vraiment concevoir votre propre analyseur de requêtes.

Vous pouvez également envisager de remplacer les guillemets par des pieds au début, avant que la requête ne soit envoyée à Solr.

Questions connexes