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?

27
demandé sur Bill the Lizard 2011-04-26 16:19:13

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.

31
répondu Umar 2012-12-27 16:50:46

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*
13
répondu Sri Harsha 2016-04-15 08:13:59

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"

2
répondu James Lawruk 2011-10-17 14:30:08

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.

1
répondu slhsen 2011-04-26 12:29:18

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.

0
répondu Laxminarayan Jahagirdar 2018-04-10 12:57:59