Недавно мы обсуждали, как получить все синонимы любого слова. Было бы замечательно, если бы мы могли найти эти синонимы во многих различных документах. В этой статье мы увидим, как искать любое слово и его синонимы в нескольких файлах с помощью Java.
Ниже перечислены темы, которые рассматриваются ниже:
- Java API – поиск синонимов
- Найти синонимы в документах на Java
- Представить результаты поиска синонимов
- Полный код Java — поиск и печать результатов поиска синонимов
Java API — поиск синонимов в нескольких файлах
GroupDocs.Search демонстрирует Java API GroupDocs.Search for Java. Он позволяет искать слова и их синонимы в различных файлах указанной папки. Он поддерживает длинный список различных форматов файлов и различные методы поиска. Некоторые из этих функций упомянуты ниже, и вы можете использовать их в сочетании для достижения своей цели:
- Логический поиск
- Поиск с учетом регистра
- Выделите результаты поиска
- Поиск омофонов
- Поиск по фразе
- Поиск по регулярным выражениям
- Поиск по кускам
- Поиск синонимов
Загрузите или настройте
Вы можете загрузить файл JAR из раздела загрузок или просто получить последний репозиторий и конфигурации зависимостей для pom.xml ваших на основе maven приложений Java.
<repository>
<id>GroupDocsJavaAPI</id>
<name>GroupDocs Java API</name>
<url>http://repository.groupdocs.com/repo/</url>
</repository>
<dependency>
<groupId>com.groupdocs</groupId>
<artifactId>groupdocs-search</artifactId>
<version>21.8</version>
</dependency>
Найдите синонимы в нескольких файлах с помощью Java
Давайте быстро перейдем к поиску синонимов в файлах. Следующие шаги показывают, как искать синонимы (слова с похожим значением) в файлах в папке с помощью Java:
- Определите индексную папку, папку документа и запрос (слово для поиска).
- Создайте индекс, используя определенную папку индекса, используя класс Index.
- Добавить папку документов в файл index.
- Включите поиск синонимов с помощью SearchOptions.
- Вызовите метод search класса Index и передайте запрос с параметрами поиска.
- Распечатайте сводку, используя свойства восстановленного класса SearchResult.
В следующем исходном коде показано, как найти все синонимы в файлах с помощью Java:
// Поиск синонимов в нескольких файлах и папках с использованием Java
String indexFolder = "path/indexFolder";
String documentsFolder = "path/documentsFolder";
String query = "make";
// Создание индекса в указанной папке
Index index = new Index(indexFolder);
index.add(documentsFolder);
// Создание объекта параметров поиска
SearchOptions options = new SearchOptions();
options.setUseSynonymSearch(true); // Enable Synonym Search
// Найдите слово «сделать»
// Помимо слова «сделать», также будут искаться синонимы «делать, получать, иметь,…».
SearchResult result = index.search(query, options);
System.out.println("Query: " + query);
System.out.println("Documents: " + result.getDocumentCount());
System.out.println("Word & Synonym Occurrences: " + result.getOccurrenceCount());
Ниже приведен вывод приведенного выше кода:
Query: **make**
Documents: 3
Word & Synonym Occurrences: 44
Печать результатов поиска синонимов с использованием Java
Из результатов поиска, полученных на предыдущем шаге, вы можете получить информацию о каждом слове и синониме поиска. Следующие шаги подробно представляют результаты после получения всех синонимов и их количества вхождений в каждом документе:
- Во-первых, выполните поиск, чтобы получить SearchResult.
- Просмотрите результаты поиска, чтобы работать с каждым FoundDocument.
- Печать соответствующих свойств каждого FoundDocument.
- Теперь извлеките и просмотрите FoundDocumentField внутри каждого FoundDocument.
- Каждое FoundDocumentField имеет свои термины, вхождения и другие свойства. Используйте соответствующий геттер.
Следующий исходный код отображает результат поиска синонимов вместе с количеством вхождений каждого искомого термина в Java.
// Печать результатов поиска синонимов в Java
System.out.println("Query: " + query);
System.out.println("Documents: " + result.getDocumentCount());
System.out.println("Word & Synonym Occurrences: " + result.getOccurrenceCount());
for (int i = 0; i < result.getDocumentCount(); i++) {
FoundDocument document = result.getFoundDocument(i);
System.out.println("Document: " + document.getDocumentInfo().getFilePath());
System.out.println("Occurrences: " + document.getOccurrenceCount());
for (FoundDocumentField field : document.getFoundFields()) {
System.out.println("\tField: " + field.getFieldName());
System.out.println("\tOccurrences: " + document.getOccurrenceCount());
// Печать найденных терминов
if (field.getTerms() != null) {
for (int k = 0; k < field.getTerms().length; k++) {
System.out.println("\t\t" + field.getTerms()[k] + "\t - \t" + field.getTermsOccurrences()[k]);
}
}
}
}
Ниже приведен вывод приведенного выше кода:
Query: **make**
Documents: 2
Total occurrences: 22
Document: C:/documents/sample.docx
Occurrences: 13
Field: content
Occurrences: 13
**make** - 2
**have** - 1
**get** - 2
**do** - 8
- - - - - - - - - - - - - - - -
Document: C:/documents/sample.txt
Occurrences: 11
Field: content
Occurrences: 11
**make** - 1
**have** - 2
**get** - 1
**do** - 7
- - - - - - - - - - - - - - - -
Document: C:/documents/sample.pdf
Occurrences: 20
Field: content
Occurrences: 20
**make** - 2
**have** - 2
**get** - 2
**do** - 14
Поиск синонимов и печать результатов в Java — полный код
Давайте объединим два вышеуказанных шага, так что вот полный исходный код. Во-первых, он находит все синонимы по заданному запросу. Затем он печатает все вхождения каждого синонима в каждом документе на Java.
// Поиск синонимов в нескольких файлах и папках с использованием Java
String indexFolder = "path/indexFolder";
String documentsFolder = "path/documentsFolder";
String query = "make";
// Создание индекса в указанной папке
Index index = new Index(indexFolder);
index.add(documentsFolder);
// Создание объекта параметров поиска
SearchOptions options = new SearchOptions();
options.setUseSynonymSearch(true); // Enable Synonym Search
// Найдите слово «сделать»
// Помимо слова «сделать», также будут искаться синонимы «делать, получать, иметь,…».
SearchResult result = index.search(query, options);
System.out.println("Query: " + query);
System.out.println("Documents: " + result.getDocumentCount());
System.out.println("Word & Synonym Occurrences: " + result.getOccurrenceCount());
for (int i = 0; i < result.getDocumentCount(); i++) {
FoundDocument document = result.getFoundDocument(i);
System.out.println("Document: " + document.getDocumentInfo().getFilePath());
System.out.println("Occurrences: " + document.getOccurrenceCount());
for (FoundDocumentField field : document.getFoundFields()) {
System.out.println("\tField: " + field.getFieldName());
System.out.println("\tOccurrences: " + document.getOccurrenceCount());
// Печать найденных терминов
if (field.getTerms() != null) {
for (int k = 0; k < field.getTerms().length; k++) {
System.out.println("\t\t" + field.getTerms()[k] + "\t - \t" + field.getTermsOccurrences()[k]);
}
}
}
}
Получите бесплатную лицензию API
Вы можете получить бесплатную временную лицензию, чтобы использовать API без ограничений пробной версии.
Вывод
Подводя итог, мы обсудили, как искать любое слово вместе с его синонимом в нескольких документах с помощью Java. Самое главное, теперь вы можете попробовать разработать собственное Java-приложение для поиска, подобное приложению GroupDocs.Search.
Узнайте больше об Java Search Automation API из документации. Чтобы ознакомиться с функциями, попробуйте примеры из репозитория GitHub. Не стесняйтесь обращаться к нам по любому вопросу через форум.