requête solr avec espace blanc
je recherche pour un mot et j'obtiens les résultats avec facette comme suit
<lst name="itemtype">
<int name="Internal">108</int>
<int name="Users">73</int>
<int name="Factory">18</int>
<int name="Supply Chain Intermediaries">6</int>
<int name="Company">1</int>
<int name="Monitor/Auditor firm">0</int>
</lst>
puis j'ai écrit la condition comme fq=itemtype:Usine j'ai les résultats. Mais je n'obtiens pas les résultats pour fq=itemtype:de la Chaîne d'Approvisionnement des Intermédiaires . Je pense que le problème avec les espaces dans la condition (intermédiaires de la chaîne D'approvisionnement), j'ai essayé avec urlencode (espace remplacer par %20) aussi. Mais pas d'utilisation. Pouvez-vous les gars s'il vous plaît aider moi de résoudre ce problème.
mise à Jour:
pour une valeur unique, il fonctionne très bien. J'ai créer la requête comme ceci
http:localhost:8080/solr/select/?q=adidas&version=2.2&indent=on&facet=on&start=0&rows=20&fq={!raw f=itemtype}Supply Chain Intermediaries
Mais j'ai besoin d'écrire pour plusieurs valeurs. La Requête d'origine avec out brut est comme suit
http://localhost/solr/select/?q=adidas&version=2.2&indent=on&facet=on&start=0&rows=20&fq=(itemtype:Company itemtype:Supply Chain Intermediaries)
pouvez-vous m'aider à résoudre ce problème?
5 réponses
comment votre champ itemtype est-il analysé?
Si il est de type chaîne de caractères , puis utiliser:
fq=itemtype:"Supply Chain Intermediaries"
Sinon, vous pouvez aussi essayer:
fq=itemtype:(Supply Chain Intermediaries)
en Supposant que OR
est l'opérateur par défaut dans la config et text
est le champ de recherche par défaut, votre requête sera traduite en:
fq=itemtype:Supply OR text:(Chain Intermediaries)
la chaîne et les intermédiaires sont recherchés contre le champ de recherche par défaut.
j'ai essayé différentes solutions mentionnées ici, mais aucun d'entre eux travaillaient. Cependant je l'ai résolu comme ceci:
fq=itemtype: *Supply\ Chain\ Intermediaries*
ici l'espace s'échappera avec \
au-dessus de La chaîne de match avec les chaînes de caractères Lorem Supply Chain Intermediaries Ipsum
Si vous rencontrez un mot commence par Supply Chain Intermediaries Ipsum
alors juste donner
fq=itemtype: Supply\ Chain\ Intermediaries*
Ce n'est pas la réponse à cette question directement, mais il peut aider avec ce problème:
supprimer les espaces avant d'afficher sur Solr.
pour les champs utilisés pour le faceting plutôt que pour la recherche, il n'est pas important de stocker la valeur avec des espaces. La valeur est simplement traitée comme un élément clé. Stocker le champ itemtype
comme ceci:"supplychainintermediaries", "monitorauditorfirm"
, etc.
lorsque vous affichez les valeurs de la facette à l'utilisateur, utilisez simplement un dictionnaire qui établit une correspondance entre les valeurs clés à afficher. valeur. Comme ceci:
"supplychainintermediaries" --> "Supply Chain Intermediaries"
"monitorauditorfirm" --> "Monitor/Auditor Firm"
je suppose que vous pouvez utiliser
fq={!raw f=itemtype}Supply Chain Intermediaries
pour cette fin
Il tuns que vous avez à utiliser !au lieu de !raw pour Solr version >= 4.0
http://mail-archives.apache.org/mod_mbox/lucene-solr-user/201012.mbox/%3C4D121F73.3090706@jhu.edu%3E
bonne journée.
j'ai corrigé problème d'espace blanc en remplaçant :
$tmp[] = $name . ':' . $this->_escapeValue($value);
avec :
$tmp[] = $name . ':' .'"'. $this->_escapeValue($value).'"';
signifie ajouter des guillemets après la valeur d'échappement dans SolrSource.php
fichier.