Dans lucene.net pouvons-nous rechercher un contenu sans donner de nom de champ ... et il va chercher dans tous les champs qui sont indexés.Dans lucene.net pouvons-nous rechercher un contenu sans donner le nom du champ ... et il va chercher dans tous les champs qui sont indexés?
Répondre
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
Il recherchera tous les champs spécifiés dans le schéma comme recherchés par défaut.
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
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.
L'auteur mentionne spécifiquement * sans * donner les noms des champs. – devios1
Ceci est extrêmement utile, et devrait être marqué comme la réponse à cette question car je l'ai essayé et cela fonctionne! –