Я хочу искать текстовую фазу в формате pdf, как "Трудовое право". Но в результате он возвращает весь файл, содержащий слово "Труд" и "Закон". пожалуйста, помогите проверить мою треску ниже:
EnglishAnalyzer analyzer = new EnglishAnalyzer();
analyzer.setVersion(Version.LATEST);
QueryParser parser = new QueryParser("content", analyzer);
Query query = parser.parse("Labor Law");
Directory indexDirectory = FSDirectory.open(new File(indexLucencePath));
DirectoryReader dirReader = DirectoryReader.open(indexDirectory);
indexSearcher = new IndexSearcher(dirReader);
ScoreDoc[] queryResults = indexSearcher.search(query, numOfResults).scoreDocs;
List<IndexItem> results = new ArrayList<IndexItem>();
for (ScoreDoc scoreDoc : queryResults) {
Document doc = indexSearcher.doc(scoreDoc.doc);
results.add(new IndexItem(doc.get(IndexItem.TITLE), doc.get(IndexItem.CONTENT)));
}
Пытаться
Фразовый запрос:
Query query = parser.parse("\"Labor Law\"");
Все условия должны присутствовать
Query query = parser.parse("+Labor +Law");
Вы также можете сами создать запрос
BooleanQuery query= new BooleanQuery();
TermQuery clause1 = new TermQuery(new Term("content", "Labor"));
TermQuery clause2 = new TermQuery(new Term("content", "Law"));
query.add(new BooleanClause(clause1, BooleanClause.Occur.MUST));
query.add(new BooleanClause(clause1, BooleanClause.Occur.MUST));
Доступны различные типы анализаторов, пожалуйста, свяжитесь с другим анализатором для вашего требования. Сравнение Lucene Analyzers. Это также может помочь Lucene: многословные фразы в качестве условий поиска