discuss
1
(from osdn.net/users/naritomitsukasa)
たいへん有益な検索エンジンを公開してくださってありがとうございます。
ロールベース検索編のページ(http://fess.sourceforge.jp/ja/articles/article-3.html)を
参考にして、linuxでのsamba&fessによるイントラ上のファイルサーバ&検索の機能を
社内で作ることに挑戦してみております。
続いてvb.netの処理から検索したいキーワードを含むURL文字列を生成し
ブラウザで開くことができないかと考えています。
根本的に勉強不足なのかもしれませんが、
URL生成のためのアドバイスを1ついただけないでしょうか。
【質問】
"Linux"というキーワードで、Soumuユーザでログインして検索をしてくれるような
URLを考えてみました。
http://xx.xx.xx.xx:8080/fess/login?j_username=Soumu&j_password=xx&goto=http://xx.xx.xx.xx:8080/fess/search?query=Linux
しかし、実際に開くとj2eeの認証画面が表示されるのみで、
URLもhttp://xx.xx.xx.xx:8080/fess/login/login;jsessionid=xxxxxxxxxxxxxxxxxxxxx
などとなってしまいました。
ロールごとの検索結果を表示してくれるようなURL文字列を作ることは
可能なのでしょうか。
【環境】
centos6.2(2.6.32-220.el6.x86_64)
fess-server-7.0.1
samba Version 3.5.10-125.el6
数MBのデータをクロールさせることに成功し、ロールごとの検索もうまくいきました。
ブラウザに表示されたリンクをクリックすると、excelやpdfのファイルが表示されるように
なっています。
ただ、リクエストパラメータのキーにfessRolesをつけての検索がどうしてもできませんでした。
そこで、SoumuというユーザIDでj2eeで認証する方式に戻しています。
運用して社内に公開するときも、テストの際にはj2eeでの認証を使えればと思っていますが、
利用者にはログインを意識させずに使わせたいと思っているため、
できるだけURL文字列に認証情報を組み込ませたいと思っています。
discuss
2
(from osdn.net/users/shinsuke)
http://xx.xx.xx.xx:8080/fess/login?j_username=Soumu&j_password=xx&goto=http://xx.xx.xx.xx:8080/fess/search?query=Linux
のようなことをやるためには、J2EEの仕様に従って、LoginModuleなどを作る必要があると思います。
リクエストパラメータやリクエストヘッダーはリバースプロキシ経由などを
想定しているので、そのようなものを利用しない場合は、毎リクエストで
値を引き回すようなリクエストになるようにカスタマイズする必要があると思います。
discuss
3
(from osdn.net/users/naritomitsukasa)
J2EEが理解できるかどうかわかりませんが、挑戦してみます。
discuss
4
(from osdn.net/users/naritomitsukasa)
サーバ側にLoginModuleを作るのは時間がかかると判断し、
スクリプトを書いて対処できました。
検索文字を引数にしてしまえば、vb.netから任意の検索を行えるようになりました。
方法を探すチャンスをくれてありがとうございました。
// ログイン画面
var URL_LOGIN = “http://xx.xx.xx.xx:8080/fess/login/login”;
var ELEMENT_USER = “j_username”;
var ELEMENT_PASS = “j_password”;
var USER = “Soumu”;
var PASS = “xxxx”;
var ie = WScript.CreateObject(“InternetExplorer.Application”);
ie.visible = true;
ie.navigate(URL_LOGIN);
while (ie.busy) {WScript.Sleep(500);}
var wf = ie.document.forms[0];
wf.elements[ELEMENT_USER].value = USER;
wf.elements[ELEMENT_PASS].value = PASS;
wf.submit();
while (ie.busy) {WScript.Sleep(500);}
// ログイン画面
var QTEXT = “Linux” ;
var ELMNT_Q = “query”
var qf = ie.document.forms[0];
qf.elements[ELMNT_Q].value = QTEXT ;
qf.submit();