2

我已经通过了 lucene 索引机制。我有一些疑问,我找不到直接的答案,我仍然对我在几个参考文献中的阅读感到困惑。

考虑使用 lucene 索引数据库表。

假设该表有 10 列,其中很少有 caseid、modifiedby、modifiedtime、casename、legalname 等...

现在,如果我在案例 id 上创建索引,那么在搜索时是否可以根据字段修改进行搜索???

假设我在 2 列 caseid 和 modifiedby 上创建了一个索引,那么将如何进行索引以及类似于前一个的疑问,我们可以根据未编入索引的合法名称进行搜索吗?

4

2 回答 2

1

如果我的意图正确(我在搜索领域工作,这不仅仅是关于词袋,它也是关于意图:)),你去:

解决方案 1

第 1 步:创建一个字段,例如在您的 schema.xml 中将其称为数据(不要忘记将其标记为多值),例如:

<field name="Data" type="text" indexed="true" stored="true" required="false" multiValued="true" />

第 2 步:您可以使用 schema.xml 中的 copyfield 指令将要搜索的所有字段的内容复制到 Data (在上面创建),例如

<copyField source="caseId" dest="Data" />
<copyField source="modifiedBy" dest="Data" />
<copyField source="casename" dest="Data" />

第 3 步:在 schema.xml 中将默认搜索字段 () 标记为 Data

现在,当您发出查询时,它将搜索您复制到数据的所有字段。

解决方案 2

有一个替代解决方案,其中在查询本身中,您可以指定字段名,例如 q=Hello+casename:Hello (在这种特殊情况下,它将在标记为默认的字段中搜索 hello 并在 casename 中搜索 Hello)。您的查询中可以有多个搜索声明。但我建议我以前的方法。

于 2012-05-29T11:37:48.733 回答
0

现在,如果我在案例 id 上创建索引,那么在搜索时是否可以根据字段修改进行搜索???

将“indexed=true”设置为所有需要索引的字段。我不明白你为什么害怕索引你需要的所有列。

你不会对 MySQL 索引感到困惑吗?

于 2012-05-29T11:15:54.617 回答