我正在将MVC应用程序中的全文搜索(使用MySql)更改为Lucene .NET,我的个性化搜索有一些怪癖,我无法在Lucene中复制。
大的是这样的:
客户1在他的联系人列表中有客户2,并给他指定了一个关键字,让他说“妈妈”。这是一个私有关键字,只有Customer 1可以看到它,并且只有当Customer 1搜索时它才能工作。
顾客1搜索“妈妈”:
顾客2搜索“妈妈”:
基本上,它是一个带有用户标识符的标记。
我在Lucene怎么做?
我能想到的唯一方法是为每个用户提供一个包含文档中关键字的私有索引,并使用我的标准索引和用户私有索引进行搜索。问题是我最终会得到千分之一的索引..。我不知道这是否真的有效率。
是否有一种方法可以在文档的字段中设置某些内容,以便只在id匹配时保存用户id并在其中搜索?
谢谢
编辑:
要求将关键字"MOM“添加到文档"Customer 2”中,但我只能在Customer 1搜索时使用该关键字。如果客户2为自己搜索,它将使用除关键字1以外的所有其他字段。
发布于 2013-01-25 19:11:22
一种方法是向每个既包含customer ID又包含它们的私有关键字的文档中添加一个字段,这样就可以创建类似customer 1:mom之类的索引。每次用户搜索私有关键字时,他们的客户ID和私有关键字都包含在查询中(如上面的customer 2:mom)。
bugaboo是,您可能需要预解析查询来转换私有关键字。如果在UI中单独输入私有关键字,则不需要这样做。
根据您的设置,此方法可能需要向索引中添加更多字段,但至少可以是1个索引,而不是数千个。
https://stackoverflow.com/questions/14482215
复制相似问题