0
query_text = "Justin Beiber";
(比伯的拼寫錯誤)我可以使用Lucene查看「查詢」是否會匹配一個單詞嗎?
word = "Bieber";
boolean results = does_match(query_text, word);
注:無論是 「小賈斯汀」,也不是 「比伯」 是一個Lucene文檔中
query_text = "Justin Beiber";
(比伯的拼寫錯誤)我可以使用Lucene查看「查詢」是否會匹配一個單詞嗎?
word = "Bieber";
boolean results = does_match(query_text, word);
注:無論是 「小賈斯汀」,也不是 「比伯」 是一個Lucene文檔中
我不知道的任何事情都沒有建立索引來實際運行查詢。但是,您可以非常容易地在內存中創建臨時索引。您需要提供至少至少這樣的方法,但是,an analyzer。
所以,你可以創建一個doesMatch方法是這樣的:
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;
}
是否確定用它來發現哪些單詞在查詢匹配命中文件? –