« mod_proxy_balancerの設定反映はrestartで | Main | pflogsumm »

2008.10.21

Tracの検索機能

Tracの検索において、複数単語を入力した場合はANDでの検索となります。ただし、複数の検索文字列として認識させるためには、

1.半角ダブルクォーテーションで文字列を囲む(例:"ほげ" "ふ が"⇒「ほげ」と「ふ が」に)
2.半角シングルクォーテーションで文字列を囲む(例:'ほげ' 'ふ が'⇒「ほげ」と「ふ が」に)
3.半角スペースで区切る(例:ほげ ふ が⇒「ほげ ふ」と「が」に)

といった感じで指定する必要があります。

上記の例では「ほげ」と「ふ」の間は全角スペース、「ふ」と「が」の間は半角スペースなので、このような挙動を示しますが、検索エンジンなどでは全角スペースも区切り文字と見なすものもあります。

検索エンジンの入力でも、元々半角スペースで区切る習慣のある人の場合は問題になりませんが、そうでない人の場合は(期待に反して(?))検索結果が得られないということになってしまいます。

対応方法としては・・・
1.query文字列中の全角スペースを半角スペースに置換するようなプラグインを作成する。
2.検索処理時に全角スペースを半角スペースに置換するようにTrac本体を書き換える。
3.検索処理時に全角スペースでも区切られるようにTrac本体を書き換える。
といった案が出てきますが・・・とりあえず、3の対応をしてみました。

search/web_ui.py

for term in re.split('(".*?")|(\'.*?\')|(\s+)', query):
の部分を
for term in re.split(u'(".*?")|(\'.*?\')|(\s+)|( +)', query):
のような感じで書き換えればオッケーな感じです(入力しているのは「全角スペース」になるので注意してください)。

|

« mod_proxy_balancerの設定反映はrestartで | Main | pflogsumm »

Subversion・Trac・etc.」カテゴリの記事

Comments

Post a comment



(Not displayed with comment.)


Comments are moderated, and will not appear on this weblog until the author has approved them.



TrackBack


Listed below are links to weblogs that reference Tracの検索機能:

« mod_proxy_balancerの設定反映はrestartで | Main | pflogsumm »