2012-04-02 1 views
2

J'essaie de trouver des documents contenant des astérisques/marques de requête dans le champ de texte Solr en utilisant Edismax parser. Tout fonctionne parfaitement lorsque je recherche du texte habituel (fq={!edismax}textfield:*sometext*) ou même pour tout autre special Lucene character en utilisant l'échappement (fq={!edismax}textfield:*\~*).Astérisque évité/marque de requête ne pas échapper lors de l'utilisation de générique principal dans Edismax

Cependant lors de la recherche * (fq={!edismax}textfield:*\**) ou ? (fq={!edismax}textfield:*\?*) ces personnages semblent ne pas être échappé, puisque tous les documents sont renvoyés. J'essaye aussi URL encoding pour les caractères échappés (comme \%2A au lieu de \*), cependant le résultat est le même.

Le problème semble préoccupation majeure wildcards que, depuis fq={!edismax}textfield:\** et fq={!edismax}textfield:\?* retour des résultats corrects, mais fq={!edismax}textfield:*\* et fq={!edismax}textfield:*\? ne le font pas (ainsi que fq={!edismax}textfield:*sometext\* etc.).

Comment est-il possible de rechercher */? en utilisant Edismax avec un astérisque générique?

Répondre

0

Citer l'astérisque fonctionne pour moi. Cette requête trouve deux livres dans mon index avec un astérisque autonome dans le titre:

title:"*" 

Voici le titre d'un d'entre eux: « Soyez * * Savoir faire, Adapté du Manuel de leadership armée officielle ». J'utilise un edismax avec Solr 3.3.

+0

Je travaillerais pour moi si j'utilisais un tokenizer comme WhitespaceTokenizerFactory. Cependant, j'ai besoin de rechercher une coïncidence stricte de phrases et d'utiliser KeywordTokenizerFactory. Par conséquent, pour trouver une partie du texte du champ, je dois utiliser des caractères génériques. – dev4

+0

Vous devriez pouvoir obtenir une coïncidence stricte des phrases sans traiter chaque valeur de champ comme un seul jeton. Faire des expressions rationnelles contre des jetons est essentiellement un balayage de table complet. Ceci est garanti de ne pas évoluer. Je recommande une approche différente. –

Questions connexes