Microsoft Access には全文検索機能がありますか?
MySQL と SQL Server には全文検索があることは知っていますが、Access についてはよくわかりません。
Access にフル テキストがない場合、フル テキスト検索の同じ目的を達成するための最良の代替手段は何ですか?
ありがとう
Microsoft Access には全文検索機能がありますか?
MySQL と SQL Server には全文検索があることは知っていますが、Access についてはよくわかりません。
Access にフル テキストがない場合、フル テキスト検索の同じ目的を達成するための最良の代替手段は何ですか?
ありがとう
100% 確信があるわけではありませんが、Microsoft のこのサイトが Access について言及していないという事実は、答えが「いいえ」であることを示唆しています。
私の腸の反応も「いいえ」です。Access は、リレーショナル データベース テクノロジの最先端を行くものではありませんでした。もしそうなら、SQL Server を使用する理由はありません。
全文検索の最初のステップは、データベース内のすべての単語を含む単語リストを作成することです。全文検索には、ステミングなどの他の機能もあり、派生語を基本語に関連付けます (高速、高速、最速)。ストップ ワードは非常に一般的であるため無視されます (and、the)。少しの VBA コードで、視覚的にスキャンできる単語リストを生成できます。もう少し作業を進めれば、コードを使用して、データベースを検索する前に最初に単語リストをチェックすることが可能になり、これにより検索が大幅に高速化される可能性があります。以下は、目的のために作成したコードです。その実際のアプリケーションは、データベースで人々の名前を見つけて、プライバシー保護のためにそれらを削除または変更できるようにすることです。生物学者として、レポートで学名を斜体にしたいと考えています。学名のリストを作成できれば、
コードはうまく機能しますが、広範囲にテストしたり、大きなメモ フィールドやリッチ テキスト フィールドに対してテストしたりしていません。アクセス2010で書いています。
'This code requires a table called tblWordList with fields called Word (str 255), WordCount (long), FirstCopyID (long)
Option Compare Database
Option Explicit
'Click on this procedure and press F5 to run the code
Private Sub ScopeWordList()
'A list of tables and fields that need to be processed
Call CreateWordList("Issues", "IssueSummary", "IssueID")
End Sub
'The main routine that finds new words
Public Sub CreateWordList(TableName As String, FieldName As String, ForeignKey As String)
Dim dbs As Database
Dim rst As Recordset
Dim SQL_Statement As String
Dim r As Recordset
Dim RowText As String
Dim OriginalWord As String
Dim SearchWord As String
Dim SearchTerm As String
Dim Quote As String: Quote = Chr$(34)
Dim i As Long
Dim RecNum As Long
SQL_Statement = "SELECT " & FieldName & ", " & ForeignKey & " AS FirstCopyID FROM " & TableName & " WHERE " & FieldName & " IS NOT NULL;"
Set dbs = CurrentDb()
Set rst = dbs.OpenRecordset(SQL_Statement, dbOpenSnapshot)
Set r = dbs.OpenRecordset("tblWordCounts", dbOpenTable)
r.Index = "Word"
With rst
If .RecordCount = 0 Then GoTo ExitCreateWordList
Do Until .EOF
Dim RowWords As Variant 'holds an array which needs to be created
RowText = .Fields(0)
'strip out quotes, slashes and other characters
RowText = CleanLine(RowText)
'split data into words
RowWords = Split(RowText, Space(1))
For i = LBound(RowWords) To UBound(RowWords)
OriginalWord = RowWords(i)
SearchWord = Left(Trim(OriginalWord), 254)
If Len(SearchWord) > 0 Then
r.Seek "=", SearchWord
If r.NoMatch Then
r.AddNew
r!Word = SearchWord
r!wordcount = 1
'records ID field of first occurrence, so you can debug unexpected results
r!FirstCopyID = !FirstCopyID
r.Update
Else
r.Edit
r!wordcount = r!wordcount + 1
r.Update
End If
End If
' End If
Next i
RecNum = RecNum + 1
If RecNum Mod 20 = 0 Then Debug.Print "Record " & RecNum
.MoveNext
Loop
ExitCreateWordList:
End With
Debug.Print "Done"
Set rst = Nothing
Set dbs = Nothing
End Sub
'Need to clean out unwanted characters and replace then with normal spaces
Private Function CleanLine(RowText As String) As String
Dim X As Long
Dim Y As String
Dim Z As Long
Dim W As String
For X = 1 To Len(RowText)
Y = Mid(RowText, X, 1)
Z = Asc(Y)
Select Case Z
Case 65 To 90 'capital letters
W = W & Y
Case 97 To 122 'lowercase letters
W = W & Y
Case Else
W = W & Space(1)
End Select
Next
CleanLine = W
End Function
'Delete all records in Word List table
Public Sub ClearWordList()
Dim SQL_Statement As String
'Delete all records from tblWordCounts
SQL_Statement = "DELETE FROM tblWordCounts"
DoCmd.SetWarnings False
DoCmd.RunSQL SQL_Statement
DoCmd.SetWarnings True
End Sub
クライアント展開可能なデータベースを探している場合、MSDE (現在は Sql Server Express と呼ばれています)にはフルテキスト インデックスがあります。
http://www.dummies.com/how-to/content/finding-records-in-your-access-2003-tables.html
検索ツールの使い方についてです。まだ試していませんが、メモ フィールドで機能するかどうかはわかりません。
アクセスはデータベースではありません。ただし、デフォルトのデータベースエンジンであるJet/ACEが付属しています。それがあなたの言っていることだと思いますが、このような質問をするときは、あなたが何を意味しているのかをより明確にする必要があります。
Jet/ACEには全文検索機能はありません。
Jet / ACEデータファイルの全文検索を行う最良の方法は、コンピューター上のファイルに対して全文検索機能を使用することです。これは高速ではなく、SQLを介して使用することもできません。
これがどのようなコンテキストであるかはわかりませんが、一般に、Webサイト(期待される機能のようなもの)を除いて、全文検索の必要性は見たことがありません。HTTPアプリケーションのデータストアとしてJet/ACEを使用している場合は、間違ったデータストアを選択しています。Jet / ACEは、少量の読み取り専用Webサイトでは正常に機能しますが、これはお勧めできません(Jet / ACEデータベースエンジンの制限のため)。
全文検索が必要な場合は、別のデータベースエンジンが必要です。