読者です 読者をやめる 読者になる 読者になる

前方一致検索

Solr Lucene

実際に試してはいないのですが、Solrで(語句ではなく)フィールド自体を前方一致で検索する方法を調べました。イメージとしてはSQLで、"field1 LIKE '東京%'"とするような。↓では次の3案が提案されていました。
Nabble - Lucene - Java Users - "Starts with" query?

  1. トークン化されないフィールドを別途用意して通常の前方一致検索("東京*")
  2. マジックトークンをデータの先頭に付加してフレーズ検索("_START_ 東京")
  3. SpanFirstクエリを使う

3番目はSolrでも可能かわかりませんが、1番目と2番目はできそうな感じですね。1番目はデータ量が多い場合にインデックスの容量が増えるという指摘があります。ただ、前方一致で検索したいフィールドはサイズ自体は大きくない場合が多いので、ドキュメントの件数次第ですね。