Как искать полный текст в Lucene 4.10

1

Я хочу искать текстовую фазу в формате 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)));
  }
Теги:
lucene

2 ответа

2

Пытаться

Фразовый запрос:

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));
  • 0
    Ваше решение будет искать 2 слова файла содержимого. но я хочу найти фразу "трудовое право", а не "труд" и "закон".
1

Доступны различные типы анализаторов, пожалуйста, свяжитесь с другим анализатором для вашего требования. Сравнение Lucene Analyzers. Это также может помочь Lucene: многословные фразы в качестве условий поиска

  • 0
    какие анализаторы подходят для моего случая?

Ещё вопросы

Сообщество Overcoder
Наверх
Меню