gpt4 book ai didi

c# - 使用具有一对多关系的表/实体创建 Lucene.net 文档索引

转载 作者:太空宇宙 更新时间:2023-11-03 11:11:53 25 4
gpt4 key购买 nike

我正在尝试使用 Lucene.net 来应用全文搜索,并且能够在这个链接的帮助下使用它 http://www.codeproject.com/Articles/320219/Lucene-Net-ultra-fast-search-for-MVC-or-WebForms

但是它只有一些简单数据的例子

虽然我有一个场景,其中两个实体以一对多关系链接。

class Product
{
public int Id{get;set;}
public int Name{get;set;}
}

class Shop
{
public int Id{get;set;}
public int Name{get;set;}
public List<Product> Products{get;set;}
}

现在实现/(将其作为单个表或文档存储在索引中)这有点棘手。

我应该为索引创建两个文档吗?

但是如果搜索是在 Product 中进行的,那么链接将是一个问题,它将返回仅包含 Product 而不是商店的结果。

它的出路是什么?还是其他方式?

--编辑---

需要将这些 1:N 相关数据存储在单个文档中,因为我将对来自两个实体的任何字段进行搜索。

因此,即使在 lucene 返回结果后,它也具有可用于两个实体的 id。

最佳答案

一种选择是在您的索引中为每个产品文档创建一个字段,其中包含所有商店 ID。

文档(产品)

Name             | Shop
------------------------
Super Product XY | 1 5 7

现在,如果您只想搜索一家商店,您可以这样做。

+Name:"Super Product" +Shop:5

一般来说,这完全取决于您的要求。您是否需要搜索所有商店并找出哪家商店提供产品,或者您想将搜索限制在一家或多家商店。

===更新===

如果您想接收 Product-ID 和 Shop-ID,您可以将字段 ProductID 和 ShopID 定义为“Field::STORE_YES”(C++ 变体,我不知道 .NET 定义)。

(STORE_YES)|(INDEXED_TOKENIZED)| (STORE_YES)
ProductID | Name | ShopID
--------------------------------------
1 | Super Product XY | 1 5 7
2 | Not good Product | 2 5 6
--------------------------------------

从找到的文档对象中,您可以读取字段 ProductIDShopID,这为您提供了所需的一切。 ShopID 将作为字符串返回,您可以用空格 ("") 将其拆分,并且您有一个 ShopID 数组。

关于c# - 使用具有一对多关系的表/实体创建 Lucene.net 文档索引,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13684179/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com