1

我正在将我的 MVC 应用程序(使用 MySql)中的全文搜索更改为 Lucene .NET。我的个性化搜索有一些我在 Lucene 中无法重现的怪癖。

大的是这样的:

客户 1 在他的联系人列表中有客户 2,并为他分配了一个关键字,比如说“妈妈”。这是一个私人关键字,只有客户 1 可以看到,并且仅在客户 1 搜索时有效。

客户 1 搜索“妈妈”:

  • 客户 2
  • 产品 3
  • ETC..

客户 2 搜索“妈妈”:

  • 产品 3
  • ETC..

基本上,它是一个带有用户标识符的标签。

我如何在 Lucene 中做到这一点?

我能想到的唯一方法是为每个用户使用文档中的关键字创建一个私有索引,并使用我的标准索引和用户私有索引进行搜索。问题是我最终会得到千分之一的索引......我不知道这是否真的有效。

有没有办法在文档的字段中设置一些东西,以便我可以保存用户 ID 并仅在 id 匹配时在那里搜索?

谢谢

编辑:

要求是将关键字“MOM”添加到文档“客户 2”中,但我只能在客户 1 搜索时使用该关键字。如果客户 2 搜索自己,它将使用除关键字 one 之外的所有其他字段。

4

1 回答 1

1

一种方法是向每个文档添加一个字段,该字段同时包含客户 ID 和他们的私有关键字,因此您最终会索引Customer1:mom之类的内容。每次用户搜索私人关键字时,他们的客户 ID 和私人关键字都会包含在查询中(如上面的Customer2:mom)。

bugaboo 是您可能需要预先解析查询以转换私有关键字。如果在 UI 中单独输入私有关键字,则无需这样做。

根据您的设置,此方法可能需要向索引添加更多字段,但至少它可能仍然是 1 个索引,而不是数千个。

于 2013-01-25T19:11:22.993 回答