在Lucene中,我们可以使用TermQuery来搜索带有字段的文本。我想知道如何在一堆字段或所有可搜索的字段中搜索关键字?
答案 0 :(得分:23)
另一种方法是使用MultiFieldQueryParser
。
您可以提供要搜索的字段列表和查询,这就是全部。
MultiFieldQueryParser queryParser = new MultiFieldQueryParser(
Version.LUCENE_41,
new String[]{"title", "content", "description"},
new StandardAnalyzer(Version.LUCENE_41));
Query query = queryParser.parse("here goes your query");
这就是我用Java编写的原始lucene库的方法。我不确定lucene.net中MultiFieldQueryParser
是否也可用。
答案 1 :(得分:10)
两种方法
1)索引时间方法:使用 catch-all 字段。这只是附加所有字段中的所有文本(输入文档中的文本总数),并将生成的大文本放在单个字段中。您需要在索引时添加一个额外的字段以充当catch-all字段。
2)搜索时方法:使用BooleanQuery组合多个查询,例如TermQuery实例。可以形成那些多个查询以覆盖所有目标字段。
Example检查文章末尾。
如果您在运行时知道目标字段列表,请使用方法2。否则,你必须使用第一种方法。
答案 2 :(得分:4)
使用“MultifieldQueryParser”在所有字段中搜索的另一种简单方法是在查询中使用 IndexReader.FieldOption.ALL 。
以下是c#中的示例。
/oauth/token
click here查看我对vb.net中相同问题的回答