2016-12-28 13 views
4

特にmongodbのすべてのドキュメントの内容を.net mvcで検索する必要があります。私はmongodbシェルを使ってインデックスを作成してみました。.netのmongodbでの全文検索

db.collection_name.createIndex({ subject: "text" }) 

db.collection_name.find({ $text: { $search: "search_word" } }) 

正常に動作します。しかし、私はそれを私にエラーを与えるネットに入れます。私はそれを検索し、インデックス作成のために次の解決策を得ました。

collection.EnsureIndex(new IndexKeysBuilder().Ascending("subject")); 

は今どのように私はこのクエリdb.collection_name.find({ $text: { $search: "coffee" } })を実行することができます。

私は次のように.netで試しています。

collection.CreateIndex("subject":"text"); 

var query = collection.Find({ $text: { $search: "coffe" }}); 

が、私は最初の行にエラーが取得しています「ユニコードのシリーズとしてテキストを表現する....構文エラー」

2行目のエラー「必要な仮パラメータに対応して与えられた引数はありません」と"予期しない文字$"。

いずれかの提案をいただければ幸いです。

+0

.Nを表示する必要がありますETコードと、それが "エラーを出す"と言うとき、何のエラー? –

+0

varコレクション= Database.GetCollection ( "articles");collection.EnsureIndex(新しいIndexKeysBuilder()。昇順( "subject")); var query = collection.find({$ text:{$ search: "coffee"}});最後の行でエラー –

+0

私はmongodbシェルで書いているように直接クエリを書くことはできないと思います。だから私はmongodbのフルテキスト検索に.netの解決策を得なければならない –

答えて

0

私は、このコマンドを使用して、テキスト索引を作成することができます。

collection.Indexes.CreateOne(Builders<searchFileByAuthor>.IndexKeys.Text(x=>x.subject)); 

と私はインデックスをこのように照会することができより:

collection.Find(Builders<searchFileByAuthor>.Filter.Text("coffe")).ToList(); 

searchFileByAuthorは、サブジェクトフィールドでちょうど私の偽のクラスです:

public class searchFileByAuthor 
{ 
    public int Id { get; set; } 
    public string subject { get; set; } 
} 
+0

私はそれを試みたがエラーを取得します。 "引数1: 'MongoDb.Driver.Filter.Definition 'から 'MongoDb.Driver.IMongoQuery'に変換できません。 –

+0

実行しようとしているものは何ですか?私は自分の答えを更新しました。 –

+0

ありがとうございました。私はファイルや文書内で検索したいだけです。このクエリは実行したいです.. collection.CreateIndex(件名: "text"); var query = collection.Find({$ text:{$ search: "coffe"}} ); –

0
public List<T> FindSearch<T>(string collectionName, string searchWord) { 
    IMongoQuery query = Query.Text(searchWord); 
    List<T> find = getCollection<T>(collectionName).Find(query).ToList(); 
    return find; 
}