2016-08-04 16 views
1

フルテキストインデックスを使用してフレーズ全体を一致させたいと思っています。 Lucene Query Parserの構文では次のように書かれています。クラウド検索:フルテキストインデックスを使用してフレーズ全体を一致させる

フレーズは、 "hello dolly"のような二重引用符で囲まれた単語のグループです。

しかし、次のセレクタを指定すると、名前に "sign"または "design"のいずれかのレコードが返されますが、 "sign design"を持つものだけが返されます。

POST https://foo.cloudant.com/remote/_find 
{"selector":{"$text":"\"SIGN DESIGN\""}} 

次のように私のインデックスが定義されています

また
db.index({ 
    name: 'subbies_text', 
    type: 'text', 
    index: {}, 
}) 

、それはJSONインデックス内のフィールドにサブストリングの一致を行うことが可能ですか?

答えて

1

インデックスAPIを使用してインデックスを作成していますか?

このデザインドキュメントを作成してみませんか?

{ "_id": '_design/library', 
    "indexes": { 
    "subbies_text": { 
     "analyzer": { 
     "name":'standard' 
     }, 
     "index": "function(doc) { index('XXX', doc.YYY); }" 
    } 
    } 
} 

(ただし、自分のフィールド名に「XXX」と「YYY」に変更します。

+0

はいジェイソン。今私はCouchDBとCloudantの違いについて非常に混乱しています。 – simon

+0

Lucene検索機能であるCloudant機能を使用しています。単に「Cloudant Search」と呼ばれています。 – JasonSmith

0

許可する単語の最大数がわかっている場合は、のmap-reduceビューでインデックスを作成できます。私はそれが理想的ではないと思うが、ただ後世のために:

することはできemit()ご覧の言葉のすべての連続したペア。たとえば、「The quick brown fox」と言うと、["the","quick"]["quick","brown"]["brown", "fox"]を発することができます。私はこれが素晴らしく簡単かもしれないと思うが、それは本当に少量のデータにしか適切ではない。インデックスが大きくなりすぎる可能性があります。

0

あなたがcloudant検索を使用する場合は、あなたが最初に検索インデックスを作成する必要がありJasonSmithは語っただけのような。それから特定のクエリを実行するために、この検索インデックスを使用することができます あなたは「名前:SIGNDESIN」持っている文書があるとします。。フィールドを

あなたが全体のフレーズを照会する1.If、あなたはこのように問い合わせることができます:

curl https://<username:password>@<username>.cloudant.com/db/_design/<design_doc>/_search/<searchname>?q=name:SIGNDESIN | jq . 

あなたがサブフレーズを照会する2.Ifは、あなたは次のように問い合わせることができます:期待通りの仕事をして

curl https://<username:password>@<username>.cloudant.com/db/_design/<design_doc>/_search/<searchname>?q=name:SI* | jq . 
+0

よろしくお願いいたします。 FWIWでは、 '_find'や設計ドキュメント自体を呼び出すなど、ビュー、インデックス(テキストとjson)でクエリを実行するさまざまな方法をすべて理解することは難しいです。 – simon

関連する問題