最近のアクセス:
Full Text Search データタイプ

このドキュメントでは、データベースおよびファイルの全文検索を可能にするために提供されている GeneXus データタイプを詳細に説明します。

1.TextSearch.Find 関数

TextSearch.Find(Character Content、(オプション) Numeric ItemsPerPage、(オプション) Numeric PageNumber): SearchResult

SearchResult データタイプ

MaxItems 検索により返されるアイテムの合計数
ElapsedTime 検索所要時間
Items SearchResultItem コレクション

SearchResultItem データタイプのプロパティ

Title:character コンテンツのタイトル
Viewer:character 取り出した結果を表示するために使用する URL
Id:character 元のソースからオブジェクトを取り出すために使用するドキュメント ID
Score:numeric クエリとアイテムの関連。0 より大きく 1 以下であり、クエリに対するドキュメントのマッチ率を示します。検索結果は既定でこのスコア順に表示されます。
TimeStamp:DateTime ドキュメントのインデックスが作成された最終日時
Type:character タイプの識別子 (ContentInfo タイプに割り当てられたものと同じ値、下記参照)
注: SearchResultItem は、ビジネスコンポーネントをロードするメソッドのパラメーターとして引き渡されます。検索の結果が「Type any BC Transaction」(任意の BC トランザクションを入力。例: Customer) である場合、次のようにプログラムできます: &Customer.load(&SearchResultItem)

全文検索の例

2.インデックス関数

データベース、ファイル、およびメモリー内に格納されたすべてのデータを検索できるよう、これらすべてのインデックスを作成できます。メモリーに格納されたデータ (変数) およびその他のタイプのデータには、検索できるようにインデックスファイル内でインデックスを付けます。

インデックスは、キーワード検索のために最適化された構造となっています。

データベース内に格納されたデータ:

トランザクション構造 (検索可能なトランザクション) 内のすべての項目属性のインデックスを作成します。トランザクション構造内に推論された項目属性および式があれば、これらについてもインデックスを作成します。

インデックスの作成は、非同期でトランザクションを操作する場合には自動で実行され、アプリケーションのパフォーマンスには影響を与えません。つまり、新しいデータはすぐに更新されて検索結果に表示されるわけではありません。

インデックス作成のタイミング

1.ビジネスコンポーネントのトランザクションフォームからデータを挿入、削除、または更新する際に作成されます。
2.ビジネスコンポーネントのメソッドからデータを挿入、削除、または更新する際に作成されます。

ほかの場合 (例: プロシージャーの更新) には、そのための関数を使用してデータのインデックスを作成する必要があります。そのための構文および使用方法は、本ドキュメントにおいて後ほど説明します。

ファイルまたはメモリー内に格納されたデータ:

ファイルの場合は、.NET では .txt、html、および pdf を、Java では .txt、.doc、.html および .pdf を使用できます。

インデックス関数

TextSearch.Add( Variable (BC | File | string) [ , ContentInfo info ] ):Boolean インデックスにコンテンツを挿入します。コンテンツが既存の場合、重複するエントリーを保存します。
TextSearch.Update(Variable (BC | File | string) [ , ContentInfo info ] ):Boolean  インデックスのコンテンツが既存の場合に、既存コンテンツを削除してからコンテンツを挿入します。
TextSearch.Delete(Variable (BC | File | string)):Boolean  インデックスからコンテンツを削除します。
TextSearch.Delete(String) : String は、情報のインデックスを示す Id でなければなりません。AddUpdate で使用する ContentInfo Id プロパティを確認してください。
TexSearch.Delete(BC) : Id (トランザクション名およびトランザクションキー) を算出し、この Id に関連付けられたインデックス情報を削除します。
TextSearch.Delete(File) : Id (ファイルのフルパス名)を算出し、この Id に関連付けられたインデックス情報を削除します。
TextSearch.Reindexall():Numeric  GeneXus 内で検索可能なビジネスコンポーネントとして定義されたテーブルのコンテンツすべてに対してインデックスを作成します。

[ ContentInfo ] プロパティ
    既定値
 プロパティ  定義 ビジネスコンポーネント ファイル
Id:character オブジェクトを元のソースから取り出すのに使用するドキュメントキー トランザクション名およびトランザクションキー ファイルのフルパス名
Viewer:character 取り出した結果を表示するために使用する URL トランザクションに関連付けられた [ Viewer ] プロパティ (ない場合は、表示モードのトランザクションを使用) ファイルパス
Type:character タイプの識別子 トランザクション名 "GxFile"
Title:character コンテンツのタイトル ビジネスコンポーネント向けのトランザクションの項目属性についての説明 ファイル名

インデックス作成の例はこちらを参照してください。

注: インデックスはどうやって確認したらよいですか。

Luke に、インデックスをナビゲートできる Lucene インデックスブラウザーがあります。

その他の全文検索関数

検索問い合わせのスペルチェックに関連する関数が 2 つあります。1 つ目の関数である BuildDictionary() は、データのインデックスを作成した後に呼び出します。BuildDictionary はインデックスディクショナリーからディクショナリーを作成します。このディクショナリーを使用して問い合わせのスペルチェックが可能です。BuildDictionary() を呼び出す際に存在するインデックスのコンテンツが多ければ多いほど、CheckSpell 関数によるスペルチェックの精度が向上します。
TextSearch.BuildDictionary(): Boolean インデックスされたコンテンツを使用してスペルチェックのためのディクショナリーを構築します。
TextSearch.CheckSpell(Character query):Character 問い合わせに含まれる単語に対するほかのスペル候補を示します。示される単語は、BuildDictionary() 関数により作成されたディクショナリーに含まれる単語に限定されます。
TextSearch.HTMLPreview(Variable (BC | string | File)、Character Query (オプション)、Character TextType (オプション)、Character PreTag (オプション)、Character PostTag (オプション)、Numeric FragmentSize (オプション)、Numeric MaxNumFragments) 問い合わせ内の単語が分かりやすい最適な箇所でテキストを分割します。
  意味 有効値 既定値
TextType(1) HTML 形式またはテキスト形式 Text、HTML HTML
PreTag 問い合わせのテキストを強調するのに使用するタグテキストの左側のタグです。 HTML のタグ <B>
PostTag 問い合わせのテキストを強調するのに使用するタグテキストの右側のタグです。 HTML のタグ </B>
FragmentSize 問い合わせを分割した各フラグメントのサイズ (バイト数)    
MaxNumFragments フラグメントの最大数    
(1):
.NET ジェネレーターにおいて HTMLPreview 関数を使用する場合、msvcp71.dll をサーバーの Windows\system32 にコピーしておく必要があります。
この dll は、MS Visual C++ 7.1 Runtime Library (.NET 2003 により配布) に含まれています。
これは、TextType (HTMLPreview 関数の 3 つ目のパラメーター) が HTML の場合にのみ必要です。こちらからインストール可能です。

FAQ

Q. 何に対してインデックスを作成するのですか?
A. トランザクション (検索可能なトランザクション) 構造内のすべての項目属性のインデックスを作成します。構築およびインデックス作成済みのテキストの形式は次のとおりです: 項目属性 <1> タイトル + " " + 項目属性 <1> 値 + ....+ 項目属性 <n> 値。
Q. Customer トランザクション内で顧客名を変更した場合、Invoice トランザクションのインデックス情報はどうなりますか?
A. Reindex プロセスを実行して Invoice トランザクションのインデックス情報を更新する必要があります。

参考情報

全文検索
全文検索の例
全文検索の例 - インデックス作成
 









サブページ
Created: 14/09/18 03:16 by Admin Last update: 21/05/20 06:18 by Admin
カテゴリ
Powered by GXwiki 3.0