2013-05-06 41 views
0

我是日光浴新手,我使用的是版本2.我已經創建了架構,並且我需要知道如何傳遞搜索關鍵字,該關鍵字應該在所有字段中搜索或少量字段按照xml。搜索鍵,在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

+0

和我的solr版本是4.2.1 – sandy 2013-05-06 09:43:26

回答

1

你可以配置你的schema.xml到

  1. 使用copyfield到將標題,說明,關鍵字組合到單個字段中,然後在該字段上進行搜索。
  2. 使用EdgeNGramFilter過濾器將作品分解爲碎片以匹配類似於sql的行爲。

例如

<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"/> 
............... 
+0

謝謝你的回答jayendra。我將點編號1添加爲並且關於點2,我是否必須添加 .....沒有任何更改,如鏈接中所述EdgeNGramFilterFactory ??? ? – sandy 2013-05-06 12:27:40

+0

更新了答案。你可以進一步調整它。 – Jayendra 2013-05-06 12:37:56

+0

嘿,我這麼做...抱歉打擾你更多...我如何在客戶端實現?即如何從客戶端傳遞?我爲客戶端使用日光浴室!是否有任何文件,你可以引用我也或任何其他替代 – sandy 2013-05-06 12:49:50