InterSystems IRIS NLP를 VB.NET에서 사용하는 방법 요약 (2)
ObjectScript의 기본 호출 방법은 다음과 같습니다.
StoredProc()
Class User.MercForNLP Extends (%Persistent, %Library.Populate)
{
Property diseaseName As %String;
Property medicalDivision As %String;
Property dataType As %String;
Property contentFull As %String(MAXLEN = 100000);
ClassMethod StoredProcTest3() [ ReturnResultsets, SqlName = StoProcTest3, SqlProc ]
{
Set rs=##class(%Library.ResultSet).%New("%iKnow.Queries.EntityQAPI:GetSimilar")
Set domId = $system.iKnow.GetDomainId("AnalyzeMerc")
Set sc=rs.Execute(domId,"糖尿病",1,50)
Do %sqlcontext.AddResultSet(rs)
}
}
이 테이블(클래스)은 [MercForNLP]입니다. 이 필드는 [diseaseName], [medicalDivision], [dataType], [contentFull] (및 기본값 [Id])입니다.
여기에 [ClassMethod]라고 선언하여 함수 (메소드) [StoredProc3()]를 작성하고 있습니다.
이 뒤에있는 []의 내용은 각각
ReturnResultSets : VB.NET 측에서 IRISDataReader로 읽을 수있는 형식으로 데이터 반환 값을 생성합니다.
SqlName=StoProcTest3 : 호출 형식이 "SQL 형식"이라는 것(User 도메인 공간에서 고유한 이름이 되도록 이름을 결정해야 함)
SqlProc : SQL 형식의 반환 값을 제공하는 프로 시저임을 선언합니다.
라는 것을 의미합니다.
NLP에 액세스하는 방법으로,
%iKnow.Queries.EntityQAPI:GetSimilar
라는 함수를 만드는 것을 알 수 있습니다. 이것은 Class Reference에서 다음과 같이 설명됩니다.
ResultSet (로 사용) rs에 GetSimilar의 결과를 반환하는 resultSet을 New로 생성합니다.
rs=##class(%Library.ResultSet).%New("%iKnow.Queries.EntityQAPI:GetSimilar")
(1)에서 작성한 도메인 [AnalyzeMerc]의 ID 번호를 얻는 방법으로서,
$system.iKnow.GetDomainId("AnalyzeMerc")
라는 함수로 부르는 것을 알 수 있습니다.
이 중에서, [당뇨병]이라는 엔티티와 유사한 엔티티를 50개까지 꺼내는 작업으로서,
Set sc=rs.Execute(domId,"당뇨병",1,50)
라는 함수가 할당되었습니다.
ObjectScript의 끝에서 반환해야 할 ResultSet으로 [rs]를 전달하고 있음을 알 수 있습니다.
Do %sqlcontext.AddResultSet(rs)
VB측에서의 기술은 다음과 같이 합니다. 이전에 설명한 IRIS 서버에 연결 한 후 IRISCommand, IRISDataReader를 사용합니다. 포인트는
Command = New IRISCommand("SQLUser.StoProcTest3", connection)
에서 지정하는 함수 이름이 [StoredProcTest3()]가 아니라 [SQLUser.StoProcTest3]라는 점에 유의해야 합니다. 출력은, [reader.Read()]로서 출력 리스트를 하나씩 읽어내, 그 항목명(필드명)을 reader.Item("entUniId")와 같은 형식으로 기술합니다.
ResultSet의 필드 이름을 아는 방법
dim i as Integer
i = reader.FieldCount 'フィールド数の上限がわかる
dim s as String
s = Reader.GetName(1) '1からi-1までの数字を入れると、フィールド名が取得できる
VB.NET 측의 설명은 다음과 같습니다.
Button3_Click
Private Sub Button3_Click(sender As Object, e As EventArgs) Handles Button3.Click
Dim connection As IRISConnection
connection = New IRISConnection
connection.ConnectionString = "Server=localhost; Port=51773; " + "Namespace = TESTSAMPLES; " + "Password = trki1979; " + "User ID = torikai;"
connection.Open()
Dim Command As IRISCommand
Dim reader As IRISDataReader
Command = New IRISCommand("SQLUser.StoProcTest3", connection)
Command.CommandType = CommandType.StoredProcedure
reader = Command.ExecuteReader()
While (reader.Read())
MsgBox(reader.Item("entUniId") & "," & reader.Item("entity") & "," & reader.Item("frequency") & "," & reader.Item("spread"))
End While
End Sub
Reference
이 문제에 관하여(InterSystems IRIS NLP를 VB.NET에서 사용하는 방법 요약 (2)), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/torisan_/items/471af69f5cb74d898ee6텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)