0

我是日光浴室的新手,我正在使用版本 2。我已经创建了架构,我需要知道如何传递搜索键,该键应该根据 xml 在所有字段或少数字段中进行搜索。

例如:我的字段是这样的。"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

4

1 回答 1

1

You can configure your schema.xml to

  1. Use copyfield to combine title, description, keywords into a single field, and then search on that field.
  2. Use EdgeNGramFilter filter to break the works into fragments so as to match the sql like behaviour.

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"/> 
...............
于 2013-05-06T12:18:12.920 回答