« 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

TrackBack URL for this entry:
http://app.cocolog-nifty.com/t/trackback/3959/42853970

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

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