Java 如何使用Lucene的MultiFieldQueryParser?

Java 如何使用Lucene的MultiFieldQueryParser?,java,lucene,indexing,information-retrieval,Java,Lucene,Indexing,Information Retrieval,我正在使用Version.Lucene_29。使用普通字符串查询方法,我可以执行以下操作: Directory directory = new FSDirectory(...); //Start Lucene retrieval. IndexSearcher iSearch = new IndexSearcher(directory, true); Analyzer analyzer = new WhitespaceAnalyzer(); QueryParser parser = new Que

我正在使用
Version.Lucene_29
。使用普通字符串查询方法,我可以执行以下操作:

Directory directory = new FSDirectory(...);
//Start Lucene retrieval.
IndexSearcher iSearch = new IndexSearcher(directory, true);
Analyzer analyzer = new WhitespaceAnalyzer();
QueryParser parser = new QueryParser(Version.LUCENE_29, "content", analyzer);
String str = 'filename:testfile.txt AND filetext:"Singapore food"'
Query query = parser.parse(str);
ScoreDoc[] hits = iSearch.search(query, 1000).scoreDocs;
如何在Lucene中使用类似于字符串查询方法的MultiFieldQueryParser启动查询

MultiFieldQueryParser multiParser = new MultiFieldQueryParser(
    Version.LUCENE_29, new String[] {"content", "ne"}, analyzer);
str = ???
Query = ????
ScoreDoc[] hits = iSearch.search(query, 1000).scoreDocs;

multifiedqueryparser
is-a
QueryParser
multifiedqueryparser
在这种情况下将两个查询创建为
boolean子句
。因此,它还支持filename:testfile.txt和filetext:“Singapore food”。

MultiFieldQueryParser允许您使用同一个分析器在多个文件中搜索“单词”

e、 g


它将在字段“title”和字段“subject”中查找单词development

如果有可能有一个包含多个单词的关键字,例如“software development”,您还需要设置
MultiFieldQueryParser.setDefaultOperator(Operator.and)
,否则它将找到包含“software”或“开发”。您可能可以使用PerfielDanalyzerRapper并取消“使用相同分析器”的限制。
 Query query = MultiFieldQueryParser.parse("development",
        new String[]{"title", "subject"},
        new SimpleAnalyzer());