2016-10-08 4 views
1
私は次のような単純なクエリを実行しています

のために動作しない部分一致検索:ArangoDB FULLTEXT()ストリング

FOR node IN FULLTEXT("myCollection", "myAttribute", "abcdef") 
    RETURN node 

私は「ABCDEF」== myAttributeとmyCollection内のノードを持っているとmyAttributeが持っていますフルテキストインデックスと上のクエリはうまく動作し、1つの結果を返します。

FOR node IN FULLTEXT("myCollection", "myAttribute", "abcde") 
    RETURN node 

単語のドキュメントの検索の例では、「」の文章で私はのためのFULLTEXT()検索は、「ABCDE」「ABCDEF」と一致する必要があることを期待する。ただし、次のクエリには結果を返しません。 FULLTEXT( "myCollection"、 "myAttribute"、 "abcde")にmyAttribute == "abcdef"というノードが見つかりました。

ありがとうございます!

- 更新:私は上記のクエリを簡潔にして理解しやすいように単純化しました。

FOR node IN FULLTEXT("myCollection", "myAttribute", "bcde") 
    RETURN node 

は、私が何をしようとしていますし、何が機能していないものを証明するために:私は、次のようなサンプルクエリを提供している必要があります。 ArangoDBは、どのような方法でもインデックスを使って部分文字列検索をサポートしていますか?アプリケーションにテキスト検索を追加しようとしていますが、LIKEを使用すると、複数のフィールド(大文字と小文字は区別されません)のすべてのコレクションに対して完全なコレクションスキャンが行われ、縮尺が変更されてしまうことになります。このポストは、実際には、データベース内の複数のコレクション(およびすべてではない多くの属性)でパフォーマンスの高いテキスト検索を実行する方法に関するものです。

ご迷惑をおかけして申し訳ありません。うまくいけば、これはより明確です。検索ボックスに検索文字列を入力するときにユーザーが期待する検索セマンティクスをサポートするArangoDBの "検索"を実装する良い方法はありますか?

答えて

1

フルテキストは、それが含まれていない単語全体を検索するためです。

単語の前に"接頭辞:"を使用する必要があります。

FOR node IN FULLTEXT("myCollection", "myAttribute", "prefix:abcde") 
    RETURN node 

このクエリでは、複数の基準や他の機能のために、動作するはずです:Fulltext functions

+0

申し訳ありませんが、私以上の私の例簡素化。私は "bcd"と部分文字列も探しています。インデックス化を使用した部分文字列検索がサポートされていないことを意味していますか? – muddlednbefuddled

+0

フルテキストインデックスは、フルとプレフィックスの一致にのみ使用できます。部分文字列照合には、完全コレクションスキャンが必要です(例: 'FORノードIN m​​yCollection FILTER node.myAttribute LIKE"%bcd% "RETURN node'。これは "bcde"、 "abcd"、 "abcde"と一致します。 – CoDEmanX

+0

ありがとうございます。私は多くのことを集めるようになった。私は何をしようとしているのかを明らかにするために投稿を更新しました。私は、LIKEによって要求される全コレクションスキャンよりもパフォーマンスの高いものを期待していた。 – muddlednbefuddled