我正在使用Hibernate Search(使用Lucene)來搜索某些已在目錄中編入索引的數據。它工作正常,但我需要做一個反向搜索。通過反向搜索,我的意思是我有一個存儲在我的數據庫中的查詢列表,我需要在每次創建數據對象時檢查這些查詢中的哪一個與數據對象匹配。我需要它在數據對象與他創建的查詢匹配時提醒用戶。所以我需要索引這個剛剛創建的單個數據對象,並查看我的列表中哪些查詢將此對象作爲結果。在Hibernate搜索中進行反向搜索
我見過的Lucene MemoryIndex類在內存中創建一個索引,所以我可以在列表中的每個查詢這樣做例子(儘管在查詢中的一個Java迭代名單不會是非常有效的):
//Iterating over my list<Query>
MemoryIndex index = new MemoryIndex();
//Add all fields
index.addField("myField", "myFieldData", analyzer);
...
QueryParser parser = new QueryParser("myField", analyzer);
float score = index.search(query);
if (score > 0.0f) {
System.out.println("it's a match");
} else {
System.out.println("no match found");
}
這裏的問題是,這個數據類有幾個Hibernate搜索註釋@字段,@ IndexedEmbedded,...這表明字段應該如何索引,所以當我調用FullTextEntityManager實例上的index()方法時,它使用這些信息索引目錄中的對象。有沒有類似的方式來使用這些信息在內存中索引它?
有沒有一個更有效的方法來做這種反向搜索?