搜索键,在xml中提到的所有字段中

时间:2013-05-06 09:42:32

标签: solr solarium

我是日光浴的新手,我正在使用版本2.我已经创建了模式,我需要知道如何传递搜索键,该搜索键应该在所有字段中搜索或按照xml搜索少数字段。

Ex:我的领域就像这样。 "title", "description", "keywords" etc.因此,当用户将某个单词键入为"xyz"时,它应搜索上述所有字段并生成输出结果。它应该搜索不仅具有确切但它应该像我们的sql "like"

日光浴样本示例并不方便。

任何帮助表示感谢。

编辑_使用场地

<fieldType name="text_general" class="solr.TextField" positionIncrementGap="100">
  <analyzer type="index">
    <tokenizer class="solr.StandardTokenizerFactory"/>
    <filter class="solr.StopFilterFactory" ignoreCase="true" words="stopwords.txt" enablePositionIncrements="true" />
    <!-- in this example, we will only use synonyms at query time
    <filter class="solr.SynonymFilterFactory" synonyms="index_synonyms.txt" ignoreCase="true" expand="false"/>
    -->
    <filter class="solr.LowerCaseFilterFactory"/>

我的所有字段类型都是text_general ..我使用solr 4.2.1

1 个答案:

答案 0 :(得分:1)

您可以将schema.xml配置为

  1. 使用copyfield将标题,说明,关键字组合到一个字段中,然后搜索该字段。
  2. 使用EdgeNGramFilter过滤器将作品分解为片段,以匹配类似sql的行为。
  3. e.g。

    <fieldType name="text" class="solr.TextField" positionIncrementGap="100">
        <analyzer>
            <tokenizer class="solr.WhitespaceTokenizerFactory"/>
            <filter class="solr.EdgeNGramFilterFactory" minGramSize="2" maxGramSize="25" />
            <filter class="solr.LowerCaseFilterFactory"/>
        </analyzer>
    </fieldType>
    
    
    <field name="all_fields" type="text" indexed="true" stored="false" multiValued="true"/>
    
    <copyField source="title" dest="all_fields"/> 
    ...............