首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用ASP.NET核心执行全文搜索和索引?

如何使用ASP.NET核心执行全文搜索和索引?
EN

Stack Overflow用户
提问于 2018-11-16 17:20:23
回答 2查看 7.4K关注 0票数 6

我正在研究如何执行全文搜索和索引,类似于python中的Whoosh。

我看过Lucene.NET,但它看起来与ASP.NET Core (2.0或更高版本)不兼容。

在这个技术栈中,对于全文搜索引擎还有其他选择吗?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2018-11-17 22:50:33

EntityFrameworkCore2.1.0使用FreeText引入全文搜索兼容性,EFCore2.2.0引入了Contains

使用Contains的EF和LINQ

代码语言:javascript
复制
string criteria = "Find This";

var items = Inventory.Where(x => EF.Functions.Contains(x.KeySearchField, criteria)).ToList();
票数 7
EN

Stack Overflow用户

发布于 2020-09-03 20:10:10

您可以使用这个nuget包Bsa.Search.Core。

此包与.Net Core3.1兼容,没有依赖关系。

库包含3种索引类型:

  • MemoryDocumentIndex -快速内存索引
  • DiskDocumentIndex将索引存储在磁盘上
  • DiskShardDocumentIndex在300多万个文档的磁盘上存储大型索引

使用内存索引的示例

代码语言:javascript
复制
var field = "*"; // search in any field
var query = "(first & \"second and four*\") | (four* ~3 \'six\')"; //search word: first and phrase with wildcard or four- wildcard on distance 3 with six
var documentIndex = new MemoryDocumentIndex();// instance of new memory index
var content = "six first second four"; // text that is indexed
var searchService = new SearchServiceEngine(documentIndex);//service engine for working with indexes
var doc = new IndexDocument("ExternalId");//the document to be indexed and externalId
doc.Add("content".GetField(content)); // adding a new field: content
searchService.Index(new IndexDocument[]
{
  doc// saving the document to the index
});

var parsed = query.Parse(field); // parsing the text and making a Boolean query
var request = new SearchQueryRequest() // 
{
     Query = parsed,
     Field = field,
};
var result = searchService.Search(request); // 

结果将是

您可以使用这个nuget包Bsa.Search.Core,但是在.net核心3.1或.net框架472下

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/53342585

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档