0

このような検索機能をssjsで作ってみました。

notesdocumentcollection.ftsearch('"*' + searchword + '*"');

このフィールド値が「Dr. Max Muster」のドキュメントがあります。「dr」を検索すると、結果が得られます。"dr. max" を検索すると、結果が得られません。ワイルドカードを削除して「dr.max」と入力すると、結果が得られます。

私もこのようにしてみました

notesdocumentcollection.ftsearch('*' + searchword + '*');

検索クエリでワイルドカードと特殊文字を使用して結果を取得する方法はありますか?

PSビューのnotesclientでこれを試してみるとうまくいきます。

編集:このクエリ「dr.ma」について、サーバーからこのデバッグ結果を取得しました

IN FTGSearch option = 0x400089 
[12CC:000A-1A30] Query: dr. ma 
[12CC:000A-1A30] Engine Query: ("drma") 
[12CC:000A-1A30] OUT FTGSearch error = F22 
[12CC:000A-1A30] FTGSearch: found=0, returne 
[12CC:000A-1A30] IN FTGSearch option = 0x40008C 
[12CC:000A-1A30] Query: *"dr**ma"* 
[12CC:000A-1A30] Engine Query: ("*dr**ma*") 
[12CC:000A-1A30] OUT FTGSearch error = F22 
[12CC:000A-1A30] FTGSearch: found=0, returned=0, start=0, count=0, limit=0
4

3 に答える 3

1

まず、検索エンジンはトリグラムシステムを使用します。そのため、2 文字の検索は期待どおりに機能しません。ワイルドカードが役立つかもしれませんが、すべてを取得できるという保証はありません。

ノーツクライアントの全文検索バーに手動で次のように入力すると、次の部分が理解できますか? (引用符が含まれています)

"*dr. max*"

ノーツ クライアントで注意すべきことの 1 つは、2 つの異なる検索モードを有効にできることです (基本設定で切り替えます)。Web クエリと Notes クエリ。

デフォルトでは Web クエリがオン (IIRC) になっているため、標準のインターネット検索エンジンと同じように検索できます。

Notes クエリに切り替えた場合、または検索がすべて大文字の単語で始まる場合、Notes が以前に使用していた構文が使用されます。

そのため、クライアントと XPages で違いが見られる可能性があります。

これをテストするには、次のようにデバッグできます。Domino サーバー コンソールで、次のように入力します。

set config DEBUG_THREADID=1
set config CONSOLE_LOG_ENABLED=1
set config Debug_FTV_Search=1

ここで、Notes クライアントと XPage で検索を行います。Domino コンソールに次のようなものが生成されます (注: 重要な行の先頭に数字を追加しました)。

IN FTGSearch
[07FC:0048-0A94] option = 0x400219
1. [07FC:0048-0A94] Query: ("*test*")
2. [07FC:0048-0A94] Engine Query: ("*test*"%STEM)
3. [07FC:0048-0A94] GTR query performed in 6 ms. 5 documents found
4. [07FC:0048-0A94] 0 documents disualified by deletion
5. [07FC:0048-0A94] 0 documents disqualified by ACL
6. [07FC:0048-0A94] 0 documents disqualified by IDTable
7. [07FC:0048-0A94] 0 documents disqualified by NIF
8. [07FC:0048-0A94] Results marshalled in 3 ms. 5 documents left
9. [07FC:0048-0A94]  OUT FTGSearch error = 0
[07FC:0048-0A94] FTGSearch: found=5, returned=5, start=0, count=0, limit=0
[07FC:0048-0A94] Total search time 10 ms.

各ビットの説明。

  1. 検索エンジンに送信した文字列。この場合、それは「テスト」でした(引用符付き)
  2. コンパイルされた検索文字列。
  3. かかった時間と見つかったドキュメントの総数。
  4. 削除済みのフラグが立てられたため、合計が破棄されました。
  5. 表示する権限がなかったため、合計が破棄されました。
  6. IDTable の結果が原因で破棄された合計。
  7. 検索元のビューに表示されないため、合計が破棄されました。
  8. かかった時間と残りのドキュメント。
  9. エラーが発生した場合。

したがって、それらの 2 つの検索結果を生成し、それが機能しないと述べた理由が明らかでない場合は、それらを投稿してください。

于 2012-10-11T08:58:38.390 に答える
0

Notes Fulltext Query Syntaxは、Disney Timeシェアアパートメントよりも秘密にされています(Disneyにいたことがある場合は、ドリフトが発生します)。

公式の構文ガイドはここにあります:http ://www-10.lotus.com/ldd/dominowiki.nsf/dx/full-text-syntax

私を大いに助けたのは、searchsite.ntfを取り出して分解することです。FTSearchのすべての概念の内部には、機能する方法で実装されています(機能するコードはいつでもドキュメントよりも優れています)。

お役に立てば幸い

于 2012-10-11T08:47:07.410 に答える
0

FTSearch のドキュメントには、単語やフレーズを引用符で囲むように記載されています。したがって、これを試してください(ワイルドカードスターではなく、検索語変数を引用符で囲みます):

notesdocumentcollection.ftsearch('*"' + searchword + '"*');
于 2012-10-11T08:32:56.413 に答える