当前位置: 首页 > 编程语言 > C#

MongoDB全文搜索分享

时间:2023-04-11 01:19:41 C#

MongoDB全文搜索创建索引db.MyCollection.createIndex({'$**':'text'},{name:'FullTextIndex'})searchmatchdb.MyCollection.find({$text:{$search:'myWord'}}).count()对于值为“myWordishere”的字段,结果为1。如果我经常如下搜索所选字段,我得到两条记录,一条有Name="myWordishere",第二条记录有"myWord"详细为"somethinghere,myWordishere"db.getCollection('MyCollection').find({"$or":[{"Name":/myWord/i},{"Details":/myWord/i}]}).sort({"Name":1})如何重新创建索引,以便SQL在所有字段中都可搜索,其中包含%searchText%等字段最后,我如何在C#驱动程序更新中编写此搜索查询:我进一步调查了它。它会找到带有前导和尾随空格的搜索键的所有结果,但不是单词字符串的一部分。示例它返回值为“HellomyWordishere”而不是“HellomyWord”的记录,但根据此文档,它必须支持通配符搜索。https://docs.mongodb.com/v3.0/reference/operator/query/text/由于我在使用Mongo的通配符搜索/全文搜索方面没有找到太多帮助,所以我想出了一个解决方案。foreach(vardocinbatch){if(custDictionary.ContainsKey(projectId)){stringconcatenatedCustomFields=custFieldsList.Aggregate(string.Empty,(current,custField)=>当前+(ds.Tables[0].Columns.Contains(custField)?(ds.Tables[0].Rows[i][custField].GetType().Name==typeof(DBNull).Name?string.Empty:((string)ds.Tables[0].Rows[i][custField]).StripHtml()):string.Empty));doc.Add("CustomFieldsConcatenated",concatenatedCustomFields);我++;我阅读了每组文档的自定义字段列表,然后创建了一个串联的Mongo字段,然后在该字段上使用正则表达式查询。然后为了提??高查询性能,添加下面的索引请注意,通配符可以包含在正则表达式搜索中,但不能包含在全文搜索中。此SERVER-10227已经有一个功能请求票。如果这对您来说很重要,请买票。进一步补充您的评论:我进一步调查了它。它会找到带有前导和尾随空格的搜索键的所有结果,但不是单词字符串的一部分。示例它返回值为“HellomyWordishere”但不是“HellomyWord”的记录$text运算符匹配完整词干。目前没有工具可以处理字符串中的索引位置,这些索引位置可以为投影返回有意义的值。在您的用例中,搜索术语“myWord”与“HellomyWord”不匹配。但是,它会匹配包含“himyWordishere”或“myWordcome”等内容的文档。有关详细信息,请参阅匹配操作页面。以上就是《C#学习教程:MongoDB全文搜索与分享》的全部内容。如果对你有用,需要进一步了解C#学习教程,希望大家多多关注。本文收集自网络,不代表立场。如涉及侵权,请点击右侧联系管理员删除。如需转载请注明出处:

猜你喜欢