如何在lucene中解析没有字段限制的搜索字符串?

时间:2016-09-23 15:25:33

标签: java lucene

我正在编写一个索引器接口并设计了一个方法:

List<MyDocument> search(String query, int start, int end);

此方法与jdbc搜索方法类似:传递sql字符串并返回。

但是当我尝试使用 lucene 来实现时,我没有找到将查询字符串解析为查询对象的方法。

我知道QueryParser和MultiFieldQueryParser,但他们需要预先准备好指定要搜索的字段。在我的界面中,将搜索哪些字段不会预先知道。

例如:

(title: help) AND (author: me) AND (content: plz)

字段titleauthorcontent是未知的。如何在 lucene 中搜索这些预先未知的字段?

有什么方法可以帮助我吗?

1 个答案:

答案 0 :(得分:1)

QueryParser的字段参数是默认字段。也就是说,当查询中未明确提供字段时,它将使用该字段。所以,如果我将“默认”作为我的默认字段,然后传递给它:title:help AND stuff就是这样:

QueryParser parser = new QueryParser("default", new StandardAnalyzer());
Query query = parser.parse("title:help AND stuff");

它会将其解释为:title:help AND default:stuff

无论您通过QueryParser传递哪个默认字段,您提供的语法都将按预期工作。