java 将fieldName设置为“*”时,使用lucene的QueryParser进行搜索失败?

fd3cxomn  于 2023-02-28  发布在  Java
关注(0)|答案(1)|浏览(125)

我想通过lucene搜索索引中的所有字段,我学会了通过编写如下代码来实现这一点:

//Create a parser that searches through all fields
QueryParser queryParser = new QueryParser("*", new StandardAnalyzer()); 

//Specify the search terms
String queryString = "search terms";

//Create the query to search through all fields
Query query = queryParser.parse(queryString); 

//Execute the query and get the results
IndexSearcher searcher = new IndexSearcher(indexReader); 
TopDocs results = searcher.search(query, 100); 
ScoreDoc[] hits = results.scoreDocs; 

//Iterate through the results
for (ScoreDoc hit : hits) { 
  Document doc = searcher.doc(hit.doc); 
  //Process the document
}

当我把QueryParser构造函数的第一个参数设置为"*"时,就像上面的代码一样,我从TopDocs中什么也得不到(我希望TopDocs搜索我写入索引的文档的所有字段,并返回所有匹配的文档),"hits.totalHits"返回0。
谁能告诉我代码出了什么问题,或者如何使用QueryParser编写代码来搜索索引中的所有字段?
谢谢!

68bkxrlz

68bkxrlz1#

你试过MultiFieldQueryParser吗?
在这种情况下,您必须指定要搜索的所有字段。

相关问题