Search Index Java の作成 – ファセット検索と複合検索
Java で強力な search experience を実装するのは、特に大量のドキュメントコレクションを扱う create search index Java プロジェクトが必要な場合、圧倒されがちです。幸い、GroupDocs.Search for Java は、数行のコードでファセット検索や複合クエリを構築できるリッチな API を提供します。このチュートリアルでは、ライブラリのセットアップ方法、create a search index Java の作成、ドキュメントの追加、シンプルなファセット検索と高度なマルチクライテリアクエリの実行方法を学びます。
クイック回答
- What is a faceted search? 事前定義されたカテゴリ(例:ファイルタイプ、日付)で結果を絞り込む方法です。
- How do I create a search index Java? フォルダーを指す
Indexオブジェクトを初期化し、ドキュメントを追加します。 - Can I combine multiple criteria? はい — オブジェクトベースのクエリまたはテキストクエリ内の Boolean 演算子を使用します。
- Do I need a license? 無料トライアルは開発に利用可能です。商用ライセンスは制限を解除します。
- Which IDE works best? 任意の Java IDE(IntelliJ IDEA、Eclipse、NetBeans)で問題なく動作します。
“create search index java” とは?
Java で検索インデックスを作成することは、ドキュメントのメタデータとコンテンツを格納し、ユーザークエリに基づく高速検索を可能にする検索可能なデータ構造を構築することです。GroupDocs.Search を使用すると、インデックスはディスク上に保存され、増分的に更新でき、ファセットや複雑な Boolean ロジックといった高度な機能もサポートします。
Why use GroupDocs.Search for faceted and complex queries?
- Out‑of‑the‑box faceting – ファイル名、サイズ、カスタムメタデータなどのフィールドでフィルタできます。
- Rich query language – テキスト、フレーズ、フィールドクエリを AND/OR/NOT 演算子で組み合わせられます。
- Scalable performance – 数百万件のドキュメントをインデックス化しながら、検索遅延を低く保ちます。
- Pure Java – ネイティブ依存関係がなく、JDK 8+ が動作する任意のプラットフォームで使用できます。
前提条件
作業を始める前に、以下を用意してください。
- JDK 8 以上 がインストールされ、IDE で設定されていること。
- Maven(または Gradle)による依存関係管理。
- GroupDocs.Search for Java ≥ 25.4。
- Java の OOP 概念と Maven プロジェクト構造に関する基本的な知識。
Setting Up GroupDocs.Search for Java
Maven Setup
pom.xml ファイルにリポジトリと依存関係を追加します:
<repositories>
<repository>
<id>repository.groupdocs.com</id>
<name>GroupDocs Repository</name>
<url>https://releases.groupdocs.com/search/java/</url>
</repository>
</repositories>
<dependencies>
<dependency>
<groupId>com.groupdocs</groupId>
<artifactId>groupdocs-search</artifactId>
<version>25.4</version>
</dependency>
</dependencies>
Direct Download
または、公式リリースページから最新の JAR をダウンロードしてください:
GroupDocs.Search for Java releases
License Acquisition
フル機能を有効にするには:
- Free trial – 開発・テストに最適です。
- Temporary evaluation license – トライアルの制限を拡張します。
- Commercial license – 本番利用時のすべての制限を解除します。
Basic Initialization and Setup
以下のスニペットは、Index クラスをインスタンス化して create a search index Java を作成する方法を示しています:
import com.groupdocs.search.Index;
public class SearchSetup {
public static void main(String[] args) {
String indexFolder = "YOUR_OUTPUT_DIRECTORY/AdvancedUsage/Searching/FacetedSearch/SimpleFacetedSearch";
// Create an instance of Index – this creates the on‑disk index
Index index = new Index(indexFolder);
System.out.println("GroupDocs.Search initialized successfully!");
}
}
インデックスが準備できたら、実務でのファセット検索や複合クエリに進めます。
How to create search index java – Simple Faceted Search
ファセット検索は、エンドユーザーが事前定義されたカテゴリ(ファセット)から値を選択して結果を絞り込むことを可能にします。以下にステップバイステップの手順を示します。
Step 1: Create an Index
まず、インデックスファイルを保存するフォルダーを指すように Index を設定します。
import com.groupdocs.search.Index;
String indexFolder = "YOUR_OUTPUT_DIRECTORY/AdvancedUsage/Searching/FacetedSearch/SimpleFacetedSearch";
Index index = new Index(indexFolder);
Step 2: Add Documents to the Index
GroupDocs.Search にソースドキュメントの所在を伝えます。サポートされているすべてのファイルタイプ(PDF、DOCX、TXT など)が自動的にインデックス化されます。
import com.groupdocs.search.Index;
String documentsFolder = "YOUR_DOCUMENT_DIRECTORY";
// Adding documents to the index
index.add(documentsFolder);
Step 3: Perform a Search in the Content Field with a Text Query
簡単なテキストクエリで content フィールドをフィルタします。構文 content: Pellentesque は、本文テキストに Pellentesque が含まれるドキュメントに結果を限定します。
import com.groupdocs.search.results.SearchResult;
String query1 = "content: Pellentesque";
SearchResult result1 = index.search(query1);
// Output search results
System.out.println("Documents found (query 1): " + result1.getDocumentCount());
Step 4: Perform a Search Using an Object Query
オブジェクトベースのクエリは細かい制御を提供します。ここでは単語クエリを作成し、フィールドクエリでラップして実行します。
import com.groupdocs.search.SearchQuery;
import com.groupdocs.search.options.CommonFieldNames;
SearchQuery wordQuery = SearchQuery.createWordQuery("Pellentesque");
SearchQuery fieldQuery = SearchQuery.createFieldQuery(CommonFieldNames.Content, wordQuery);
SearchResult result2 = index.search(fieldQuery);
// Output search results
System.out.println("Documents found (query 2): " + result2.getDocumentCount());
How to create search index java – Complex Query Search
複合クエリは複数のフィールド、Boolean 演算子、フレーズ検索を組み合わせます。これは、e‑commerce のフィルタや法務文書の調査などのシナリオに最適です。
Step 1: Create an Index for Complex Queries
同じフォルダー構造を再利用できます。シンプルと複合のシナリオでインデックスを共有可能です。
String indexFolder = "YOUR_OUTPUT_DIRECTORY/AdvancedUsage/Searching/FacetedSearch/ComplexQuery";
Index index = new Index(indexFolder);
index.add(documentsFolder);
Step 2: Perform a Search with a Text Query
以下のクエリは、ファイル名が lorem and ipsum or コンテンツに 2 つの正確なフレーズのいずれかが含まれるものを検索します。
import com.groupdocs.search.results.SearchResult;
String query1 = "(filename: (lorem AND ipsum)) OR (content: (\"lectus eu aliquam\" OR \"dignissim turpis\"))";
SearchResult result1 = index.search(query1);
// Output search results
class SearchResult {
public int getDocumentCount() {
// Implementation here
return 0; // Placeholder
}
}
System.out.println("Documents found (complex text query): " + result1.getDocumentCount());
Step 3: Perform a Search with an Object Query
オブジェクトベースの構築はテキストクエリと同等ですが、型安全性と IDE の支援が得られます。
import com.groupdocs.search.SearchQuery;
SearchQuery word6Query = SearchQuery.createWordQuery("lorem");
SearchQuery word7Query = SearchQuery.createWordQuery("ipsum");
// Constructing AND, OR queries for filename field
SearchQuery andQuery = SearchQuery.createAndQuery(word6Query, word7Query);
SearchQuery filenameQuery = SearchQuery.createFieldQuery(CommonFieldNames.FileName, andQuery);
// Content search using OR query with phrases
SearchQuery phrase1Query = SearchQuery.createPhraseSearchQuery("lectus", "eu", "aliquam");
SearchQuery phrase2Query = SearchQuery.createPhraseSearchQuery("dignissim", "turpis");
SearchQuery contentQuery = SearchQuery.createFieldQuery(CommonFieldNames.Content,
SearchQuery.createOrQuery(phrase1Query, phrase2Query));
// Final root query combining filename and content queries
SearchQuery rootQuery = SearchQuery.createOrQuery(filenameQuery, contentQuery);
SearchResult result2 = index.search(rootQuery);
// Output search results
System.out.println("Documents found (complex object query): " + result2.getDocumentCount());
Practical Applications of Faceted & Complex Searches
| シナリオ | ファセットが役立つ方法 | クエリ例 |
|---|---|---|
| E‑commerce catalog | カテゴリ、価格、ブランドでフィルタ | category: Electronics AND price:[100 TO 500] |
| Legal document repository | ケース番号、管轄で絞り込み | caseNumber: 2023-045 AND jurisdiction: "California" |
| Research archives | 著者、出版年、キーワードを組み合わせ | (author: "Doe") AND (year: 2022) AND (keywords: "machine learning") |
| Enterprise intranet | ファイルタイプと部門で検索 | filetype: pdf AND department: HR |
これらの例は、create search index java のテクニックを習得することが、データ集約型アプリケーションにおいて大きな差別化要因になることを示しています。
Common Pitfalls & Troubleshooting
- Empty results – ドキュメントが正しく追加されたか確認してください(
index.getDocumentCount()が役立ちます)。 - Stale index – ファイルを追加または削除した後は、
index.update()を呼び出してインデックスを同期させます。 - Incorrect field names – タイプミスを防ぐために
CommonFieldNames定数(Content、FileNameなど)を使用してください。 - Performance bottlenecks – 大規模コレクションの場合、
index.setCacheSize()の有効化やインデックスフォルダー用に専用 SSD を使用することを検討してください。
Frequently Asked Questions
Q: Can I use GroupDocs.Search with Spring Boot?
A: もちろんです。Maven 依存関係を追加し、インデックスを Spring Bean として構成し、必要な場所でインジェクトしてください。
Q: Does the library support custom metadata fields?
A: はい – インデックス作成時にユーザー定義フィールドを追加でき、後でそれらのフィールドに対してファセットを適用できます。
Q: How large can the index grow?
A: インデックスはディスクベースで、数百万件のドキュメントを処理できます。十分なストレージを確保し、キャッシュ設定を監視してください。
Q: Is there a way to rank results by relevance?
A: GroupDocs.Search はマッチングを自動的にスコア付けします。スコアは SearchResult.getDocument(i).getScore() で取得可能です。
Q: What happens if I index encrypted PDFs?
A: ドキュメントを追加する際にパスワードを指定してください:index.add(filePath, password)。
Conclusion
これで、GroupDocs.Search を使用した create search index Java の作成、ドキュメントの追加、シンプルなファセットクエリと高度な Boolean 検索の両方の構築方法に慣れたはずです。これらの機能により、e‑commerce プラットフォームからエンタープライズナレッジベースまで、幅広いアプリケーションで高速かつ正確でユーザーフレンドリーな検索体験を提供できます。
次のステップに進みますか? GroupDocs.Search の高度な機能(highlighting、suggestions、real‑time indexing など)を探求し、アプリケーションの検索パワーをさらに向上させましょう。
Last Updated: 2025-12-16
Tested With: GroupDocs.Search 25.4 for Java
Author: GroupDocs