使用Lucene Query测试文档是否匹配

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了使用Lucene Query测试文档是否匹配相关的知识,希望对你有一定的参考价值。

我正在使用Lucene查询来执行以下项目:

Analyzer analyzer = new StandardAnalyzer();
QueryParser parser = new QueryParser("message", analyzer);
Query log = parser.parse("something OR name=mustafa");

是否有任何可能性使用此Query对象与某种Map或POJO来测试该对象是否与查询匹配?我知道这不是Lucene的用途,它适用于IndexSearcher,但它对我有用。

举例说明我的想法:

Map<String,Object> a = {"message": "xx", "name": "mustafa"}
Map<String,Object> b = {"message": "xx", "name": "osman"}

SomeSearcher.matches(log, a) == true
SomeSearcher.matches(log, b) == false
答案

在我看来,你可以使用org.apache.lucene.store.RAMDirectory

这样,您就可以满足从内存中完全测试的要求,并且在POC阶段之后转移到磁盘实现所需的更改也非常少。

以上是关于使用Lucene Query测试文档是否匹配的主要内容,如果未能解决你的问题,请参考以下文章

lucene

lucene 怎么这么快计算文档的交集?

Lucene--搜索

Lucene提供的条件判断查询

吃透 | Elasticsearch filter和query的不同

吃透 | Elasticsearch filter和query的不同