【发布时间】:2018-07-04 09:34:05
【问题描述】:
我是 Lucene 的新手,我想知道是否有一种方法可以在不知道其名称的情况下搜索多个文档中的所有可能字段,或者...另一种方法:获取所有字段名称(版本 6.2.1 )
-
例如:如何从 'fields' 数组中获取所有名称,而不是像下面的示例那样填充它们
Analyzer analyzer = new StandardAnalyzer(); String querystr = "test"; String[] fields = {"title","isbn","desc", "name", "surname", "description"}; BooleanClause.Occur[] flags = new BooleanClause.Occur[fields.length]; Arrays.fill(flags, BooleanClause.Occur.SHOULD); Query query = MultiFieldQueryParser.parse(querystr, fields, flags, analyzer);我已经检查了这些主题:
a)How to search across all the fields?
我们已经实现了这个答案:
1) 索引时间方法:使用包罗万象的字段。这只不过是附加所有字段中的所有文本(输入文档中的总文本)并将产生的巨大文本放在单个字段中。您必须在索引时添加一个附加字段以充当一个包罗万象的字段。
但如果有可能我们想改变它
c)IndexReader.getFieldNames Lucene 4
但这些解决方案在 Lucene 版本 6.2.1 中不存在
IndexReader.getFieldNames() (v. 3.3.0)
final AtomicReader reader = searcher.getAtomicReader();
最终的 FieldInfos 信息 = reader.getFieldInfos(); (v. 4.2.1)
...或者是否有一种方法(不一定是 MultiFieldQueryParser)可以搜索所有没有名称的字段(v. 6.2.1)?
【问题讨论】:
-
据我了解,您想在文档中的所有字段上添加一种全文搜索?