Archivaのパスワードポリシー変更

Archivaを導入して3ヶ月くらい経つとパスワードの再設定を要求される。これはこれで良いことだとは思うのだけど、運用する手間が増えるのでちょっと微妙…。というわけで、設定の変え方だけど、ここに書いてある。~/.m2/secruity.propertiesファイルを作成して、

# Security Policies
security.policy.password.previous.count=6
security.policy.password.expiration.days=90
security.policy.password.expiration.enabled=true
security.policy.allowed.login.attempt=3
# Password Rules
security.policy.password.rule.alphanumeric.enabled=false
security.policy.password.rule.alphacount.enabled=true
security.policy.password.rule.alphacount.minimum=1
security.policy.password.rule.characterlength.enabled=true
security.policy.password.rule.characterlength.minimum=1
security.policy.password.rule.characterlength.maximum=8
security.policy.password.rule.musthave.enabled=true
security.policy.password.rule.numericalcount.enabled=true
security.policy.password.rule.numericalcount.minimum=1
security.policy.password.rule.reuse.enabled=true
security.policy.password.rule.nowhitespace.enabled=true

を適当に編集しておいておく。security.policy.password.expiration.daysとかを適当に変更すれば良いかと。conf/security.propertiesの方は何か動かなかったけど、詳しく調べていない。

SolrJ 4.2の変更点

Solr 4.2になって、SolrJのSolrQuery#addSortFieldがDeprecatedになった。つまり、

query.addSortField("hoge", ORDER.desc);

というのを

query.addSort("hoge", ORDER.desc);



query.addSort(new SortClause("hoge", ORDER.desc));

という感じに変更するみたい。この変更は順番の関係かしら…。

Solrの日付型

Fessではファイルの更新日時とかlongとしてもっていたのだけど、日付のファセットをやろうと思うとdate型にする必要があるようなので、型を変更することにした。そもそも、なんでlongにしていたかというと、いまいちSolrJ経由でdate型としての突っ込み方を調べていなかったからです…。(まぁ、簡単に言うと手抜きです…ごめんなさい) というわけで、今回、Solrでdate型を利用することにしたのだけど、Solrのschema.xml的には

<fieldType name="date" class="solr.TrieDateField" precisionStep="0" positionIncrementGap="0"/>
<fieldType name="tdate" class="solr.TrieDateField" precisionStep="6" positionIncrementGap="0"/>

というような型の定義があると思うけど、これを

<field name="tstamp" type="tdate" stored="true" indexed="true"/>

という感じで利用する。記述フォーマットについてはSolrのorg.apache.solr.schema.DateFieldのJavaDocとか見れば良いと思うけど、ISO 8601に従う感じで、XML Schema にある、より厳しくした感じの正規化した日付表現で以下のような感じ。

  • 1995-12-31T23:59:59Z
  • 1995-12-31T23:59:59.9Z
  • 1995-12-31T23:59:59.99Z
  • 1995-12-31T23:59:59.999Z

Javaのコードで上記の文字とDateへの変換はorg.apache.solr.common.util.DateUtilを使えば良さそう。パースの方はDateUtil.parseDate(String)で良いと思うけど、日付から文字列へはDateUtil.getThreadLocalDateFormat().format(date)という感じでやればよさそう。FessではFessFunctionsで実装して、JSP上からも${fe:〜}で利用している。