2009-07-27 6 views

Répondre

10

Vous ne pouvez pas rechercher de contenu sans indiquer le nom du champ, . Toutefois, vous pouvez utiliser MultiFieldQueryParser pour rechercher dans tous les champs disponibles.

par exemple

Dim queryParser = New MultiFieldQueryParser(Version.LUCENE_29, _ 
    indexReader__1.GetFieldNames(IndexReader.FieldOption.ALL).ToArray(), analyzer) 

ici est un exemple complet.

'get index directory 
Dim directory As Directory = FSDirectory.Open(New DirectoryInfo(HostingEnvironment.MapPath(VirtualIndexPath))) 

'get analyzer 
Dim analyzer As Analyzer = New StandardAnalyzer(Version.LUCENE_29) 

'get index reader and searcher 
Dim indexReader__1 As IndexReader = IndexReader.Open(directory, True) 
Dim indexSearch As Searcher = New IndexSearcher(indexReader__1) 

'add all possible fileds in multifieldqueryparser using indexreader getFieldNames method 
Dim queryParser = New MultiFieldQueryParser(Version.LUCENE_29, _ 
    indexReader__1.GetFieldNames(IndexReader.FieldOption.ALL).ToArray(), analyzer) 
Dim query = queryParser.Parse(Criteria) 
Dim resultDocs As TopDocs = Nothing 

'perform search 
resultDocs = indexSearch.Search(query, indexReader__1.MaxDoc()) 
Dim hits = resultDocs.scoreDocs 

espoir qui aident

+1

Ceci est extrêmement utile, et devrait être marqué comme la réponse à cette question car je l'ai essayé et cela fonctionne! –

1

Il recherchera tous les champs spécifiés dans le schéma comme recherchés par défaut.

+1

Pouvez-vous s'il vous plaît me fournir l'extrait de code, syntax..for comment vous allez écrire requête pour le même. – devson

1

Utilisez MultiFieldQueryParser pour analyser vos requêtes et lui fournir un tableau des noms de champs que vous souhaitez rechercher.

La requête n'a pas besoin de syntaxe particulière. Si votre requête est "chapeau de chat", elle recherchera tous les champs spécifiés pour l'un ou l'autre de ces termes. Si votre opérateur par défaut est AND, il faudra que chaque terme soit trouvé dans au moins un champ.

+1

L'auteur mentionne spécifiquement * sans * donner les noms des champs. – devios1

Questions connexes