Apache luceneを調査(メモ)

そのうち使いたくなる日が来るに違いないと思われるのでちょっとだけ調査。

  • インデックスを作る: IndexWriter
    • インデックスの格納場所: Directory
    • 検索対象のデータ: Document
      • 検索データ内のタグ: Field
    • データの索引化: Analyzer
      • Tokenの大文字/小文字を無視: SimpleAnalyzer
      • (調査中): StandardAnalyzer
      • Tokenの大文字/小文字を無視+接続詞などを無視: StopAnalyzer
      • KeywardTokenizerを使うAnalyzer: KeywordAnalyzer
      • WhitespaceTokenizerを使うAnalyzer: WhitespaceAnalyzer
      • CJKTokenizerを使うAnalyzer: CJKAnalyzer(contrib)
      • 項目ごとにAnalyzerを変更: PerFieldAnalyzerWrapper
    • データのTokenへの切り出し: Tokenizer
      • 一文字ずつ切り出す: CharTokenizer
      • 空白文字以外を一文字ずつ切り出す: WhitespaceTokenizer
      • 記号や空白で切り出す: StandardTokenizer
      • 全体を1Tokenとして切り出す: KeywordTokenizer
      • (調査中): SinkTokenizer
      • CJK文字を2-gram分割: CJKTokenizer(contrib)
      • N-gram分割: NGramTokenizer(contrib)
      • 記号や空白で切り出したTokenに対するN-gram分割: EdgeNGramTokenizer(contrib)
  • インデックスから検索: IndexSearcher
    • 検索クエリ: Query
      • 検索クエリを構築:QueryParser
      • 検索語をTokenに分割: Analyzer
    • 検索結果: Hits
      • 検索結果をフィルタリングしたい: Filter
      • 検索結果をソートしたい: Sort
      • 結果をLazy Loadしたい: Hits.iterator() -> Hit