我正在编写一个索引器接口并设计了一个方法:
List<MyDocument> search(String query, int start, int end);
此方法与jdbc
搜索方法类似:传递sql
字符串并返回。
但是当我尝试使用 lucene 来实现时,我没有找到将查询字符串解析为查询对象的方法。
我知道QueryParser和MultiFieldQueryParser,但他们需要预先准备好指定要搜索的字段。在我的界面中,将搜索哪些字段不会预先知道。
例如:
(title: help) AND (author: me) AND (content: plz)
字段title
,author
和content
是未知的。如何在 lucene 中搜索这些预先未知的字段?
有什么方法可以帮助我吗?
答案 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传递哪个默认字段,您提供的语法都将按预期工作。