solr和lucene中的索引存储

时间:2012-05-29 09:33:49

标签: solr lucene

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

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

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

现在,如果我在case id上创建一个索引,那么在搜索时可以根据字段修改???

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

2 个答案:

答案 0 :(得分:1)

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

解决方案1 ​​

第1步:创建一个字段,例如在schema.xml中将其命名为Data(不要忘记将其标记为多值),如:

<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中的数据

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

解决方案2

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

答案 1 :(得分:0)

  

现在,如果我在case id上创建一个索引,那么在搜索时可以根据字段修改???

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

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