我正在利用 Lucene.net 3.0 版 API 为我的项目创建和搜索索引。我的索引中的每个文档都有三个字段:
- 交易 ID
- 代理人
- 贷方
我的要求是这样的:
如果搜索词与TransactionId的文档值的第一部分匹配,我想要一个命中。例如,如果我搜索“ab”,则TransactionId等于“ab-1”或“ab-2”的文档将被命中。
当完整的搜索词匹配Agent和Lender时,我只想要命中。搜索“ab”不会返回 Lender 值为“ab-1”或“ab-2”的文档。
到目前为止,我有以下代码块:
var searcher = new IndexSearcher(FSDirectory.Open(path));
var parser = new MultiFieldQueryParser(Version.LUCENE_30,
new[] {"TransactionId", "Agent", "Lender"},
new StandardAnalyzer(Version.LUCENE_30));
var query = parser.Parse(queryText);
var hits = searcher.Search(query, 200);
如果queryText
是 "ab" 那么查询的值是{TransactionId:ab Agent:ab Lender:ab}
我知道我正在寻找类似的东西{TransactionId:ab* Agent:ab Lender:ab}
有什么办法可以做到这一点MultiFieldQueryParser
?