2010-03-10 71 views
7

除了一些小的配置和模式更改外,我已經獲得了SOLR 1.4的大量安裝。使用Solr 1.4進行通配符搜索和突出顯示

<requestHandler name="standard" class="solr.SearchHandler" default="true"> 
    <!-- default values for query parameters --> 
    <lst name="defaults"> 
     <str name="defType">dismax</str> 
     <str name="echoParams">explicit</str> 
     <str name="qf"> 
      text 
     </str> 
     <str name="spellcheck.dictionary">default</str> 
     <str name="spellcheck.onlyMorePopular">false</str> 
     <str name="spellcheck.extendedResults">false</str> 
     <str name="spellcheck.count">1</str> 
    </lst> 
</requestHandler> 

我使用索引的主要字段類型是這樣的:

<fieldType name="textNoHTML" class="solr.TextField" positionIncrementGap="100"> 
     <analyzer type="index"> 
      <charFilter class="solr.HTMLStripCharFilterFactory" /> 
      <tokenizer class="solr.WhitespaceTokenizerFactory"/> 
      <filter class="solr.StopFilterFactory" 
        ignoreCase="true" 
        words="stopwords.txt" 
        enablePositionIncrements="true" 
      /> 
      <filter class="solr.WordDelimiterFilterFactory" generateWordParts="1" generateNumberParts="1" catenateWords="1" catenateNumbers="1" catenateAll="0" splitOnCaseChange="1"/> 
      <filter class="solr.LowerCaseFilterFactory"/> 
      <filter class="solr.SnowballPorterFilterFactory" language="English" protected="protwords.txt"/> 
     </analyzer> 
     <analyzer type="query"> 
      <tokenizer class="solr.WhitespaceTokenizerFactory"/> 
      <filter class="solr.SynonymFilterFactory" synonyms="synonyms.txt" ignoreCase="true" expand="true"/> 
      <filter class="solr.StopFilterFactory" 
        ignoreCase="true" 
        words="stopwords.txt" 
        enablePositionIncrements="true" 
      /> 
      <filter class="solr.WordDelimiterFilterFactory" generateWordParts="1" generateNumberParts="1" catenateWords="0" catenateNumbers="0" catenateAll="0" splitOnCaseChange="1"/> 
      <filter class="solr.LowerCaseFilterFactory"/> 
      <filter class="solr.SnowballPorterFilterFactory" language="English" protected="protwords.txt"/> 
     </analyzer> 
    </fieldType> 

現在,當我執行使用

"q=search+term&hl=on" 

我得到突出顯示搜索,和漂亮的準確分數。

但是,對於通配符,我假設你需要使用「q.alt」?真的嗎?如果是這樣我的查詢看起來是這樣的:

"q.alt=search*&hl=on" 

當我使用上面的查詢,高亮不工作,所有的分數都是「1.0」。

我在做什麼錯?是我想要的,而不繞過一些非常酷的SOLR優化。

乾杯!

+1

我發現的一些信息:http://old.nabble.com/Wildcard-on-q.alt-with-Dismax-td17722791.html http://www.mail-archive.com/solr-user @ lucene.apache.org/msg21518.html但是它似乎是固定的1.4。我會繼續找... – 2010-03-10 22:18:49

+0

酷,歡呼Mauricio。我發現了很多關於這個主題的信息,但是討論永遠不會解決我需要使用哪些參數,或者如果我仍然可以使用突出顯示,得分,拼寫檢查等等。歡呼聲儘管 – andy 2010-03-10 23:44:28

回答

8

從我所知道的你不能在dismax處理程序中使用通配符,請參閱http://wiki.apache.org/solr/DisMaxRequestHandler#q

要模擬通配符搜索,我使用了EdgeNGrams,按照這裏的一些指令:http://www.lucidimagination.com/blog/2009/09/08/auto-suggest-from-popular-queries-using-edgengrams/。實際上,我真的只是將edgytext字段類型添加到schema.xml中,並更改了我想要搜索的字段的字段類型。

希望這會有所幫助!

+0

哇,歡呼聲,最後!! – andy 2010-05-18 07:35:14

+0

很高興能幫到你!我很沮喪自己:) – jimmystormig 2010-05-19 12:55:56

5

或者您可以抓住最新的每晚構建並使用edismax(ExtendedDismaxQParser)。

它處理尾隨和領先的通配符。

+0

很酷,謝謝Jem,我會檢查一下。順便說一句,你是在Solr郵件列表論壇上的東西嗎?如果Solr能夠成爲SO他們是官方問答地點,這將是一件好事......這些郵件列表真的很不直觀 – andy 2010-05-23 23:31:43