2012-11-30 3 views
1

J'utilise le Crawler avancé de base de données d'Alex Shyba pour indexer des données des requêtes de Sitecore et de Lucene.NET pour faire des requêtes de recherche. Je l'ai pour la plupart fonctionnant solidement, mais j'ai des problèmes avec le champ _language lorsque j'essaie de faire un match avec un terme, par exemple en-US, zh-CN et de-DE.Recherche de langue de Sitecore avec Lucene.NET

Renvoie tous les résultats pour la culture 'en'. Mais par exemple, dans la culture zh-CN, elle retourne environ 99% des résultats et omet 2 ou 3 articles de chaque série. L'en et zh-CN sont des versions différentes du même élément. Je peux voir les deux informations sur l'élément dans les deux cultures dans l'index via Luke. J'utilise TermQuery sur le champ de langue pour renvoyer des données. J'ai essayé d'utiliser PhraseQuery et WildCardQuery mais chaque fois j'ai eu les mêmes résultats.

J'ai essayé d'échapper au trait d'union puisque Standard Analyzer n'aime pas les hypers avec une barre oblique inverse mais cela ne fonctionne pas non plus.

À ce stade, je n'ai plus d'idées. Comment puis-je faire en sorte que mes requêtes renvoient tous les documents correspondants?

Merci

Répondre

0

L'ADC a ses propres objets de requête pour définir les paramètres de recherche. Il suffit d'utiliser la propriété Language sur le SearchParam object pour effectuer une recherche par langue.

+0

Je n'avais pas réalisé que ADC avait cette classe. J'ai utilisé des requêtes Lucene.NET pour construire ma logique. La plupart de mon code est déjà fait à ce stade et je détesterais avoir à réécrire quelque chose maintenant. D'autres suggestions que vous pourriez avoir? – Gabbar

+0

Je vous suggère de regarder le code dans l'ADC pour voir comment il gère réellement le filtrage de la langue. –

+0

On dirait que c'est dans cette même classe, la méthode 'ApplyLanguageClause()' ajoute une requête de phrase sur 'BuiltinFields.Language' pour le code iso de la langue. –

Questions connexes