我想通过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编写代码来搜索索引中的所有字段?
谢谢!
1条答案
按热度按时间68bkxrlz1#
你试过MultiFieldQueryParser吗?
在这种情况下,您必须指定要搜索的所有字段。