【问题标题】:Index storage in solr and lucenesolr 和 lucene 中的索引存储
【发布时间】:2012-05-29 09:33:48
【问题描述】:

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

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

假设该表有 10 列,少数分别是 caseid、modifiedby、modifiedtime、casename、legalname 等...

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

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

【问题讨论】:

    标签: solr lucene


    【解决方案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 )。您的查询中可以有多个搜索声明。但我建议我以前的方法。

    【讨论】:

    • 谢谢 yavar,您的回答不仅仅是我的问题的解决方案。
    • 一次搜索多个字段是否有效?即假设我填写了所有字段 caseID 、 modifiedBY 和 casename 并搜索第一个解决方案在这种情况下是否有效,或者我们是否面临任何问题?
    • 是的 Sundeep,第一个解决方案仅用于一次搜索多个字段。
    • 所以我可以解释一下它,因为它会在所有列索引上并行搜索,并在每列命中时将选择的整行作为结果。
    【解决方案2】:

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

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

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

    【讨论】:

    • 我对mysql索引不太熟悉。我想知道在 solr 中,如果我索引我的所有列,当在特定列上搜索时它如何存储索引和映射
    猜你喜欢
    • 2011-10-26
    • 2012-03-26
    • 1970-01-01
    • 2010-10-13
    • 1970-01-01
    • 1970-01-01
    • 2014-04-12
    • 2013-03-08
    • 2011-01-19
    相关资源
    最近更新 更多