query_text = "Justin Beiber";
(比伯写错了)
word = "Bieber";
boolean results = does_match(query_text, word);
注意:“Justin Beiber”和“Bieber”都不在Lucene文件中
答案 0 :(得分:0)
如果不构建实际运行查询的索引,我就不知道有什么事情可以做到这一点。但是,您可以非常轻松地在内存中创建临时索引。您需要为这样的方法提供至少,an analyzer。
所以你可以像这样创建一个doMatch方法:
public static boolean doesMatch(String query, String doctext, Analyzer analyzer) throws IOException, ParseException {
Directory dir = new RAMDirectory();
IndexWriterConfig config = new IndexWriterConfig(analyzer);
IndexWriter writer = new IndexWriter(dir, config);
Document doc = new Document();
doc.add(new TextField("text", doctext, Field.Store.NO));
writer.addDocument(doc);
writer.close();
IndexReader reader = DirectoryReader.open(dir);
IndexSearcher searcher = new IndexSearcher(reader);
QueryParser parser = new QueryParser("text", analyzer);
Query parsedQuery = parser.parse(query);
TopDocs results = searcher.search(parsedQuery, 1);
reader.close();
dir.close();
return results.totalHits == 1;
}