Я хотел бы предложить два вида документов:
1) Реальные_документы с полем под названием: «DocumentID»
2) Защитный документ с полями: «Роль» «Группы» «Пользователи» «PermisionId» «DocumentsIds»
тогда псевдокод может быть:
Field[] docIds =searcher.search("Users", "currentUser").getFields("DocumentIds");
TermsFilter filter = new TermFilter();
foreach(field:docIDs){
filter.add(new Term(field.field(),field.text());
}
searcher.search(query.getWeight(searcher), filter, numberOfDocuments);
То, что Lucene очень быстро ищет два поиска, действительно легко сделать. Таким образом, вы также получите лучший tf-idf для каждого пользователя.