2012-02-29 91 views
7

我使用Solr的我的應用程序,我整合了拼寫檢查組件,但我有一些問題:Solr的你的意思(拼寫檢查組件)

第一: 當我鍵入用空格隔開的一個術語,他們給我的修正每學期

如:「笏TER值」 =>「什麼術語」但真正是沃特斯

二: 當我輸入所以我有一些錯誤的詞語。儘管其他條款是正確的,但他們適用於所有條款的咒語。

例如: 「Difreenceslankuage使用約定」 => 「語言使用轉換差異」。

真正是

「在語言的使用規範的區別」 這是我在solrconfig.xml中配置:

<searchComponent name="spellcheck" class="solr.SpellCheckComponent"> 
      <str name="queryAnalyzerFieldType">textSpell</str> 
      <lst name="spellchecker"> 
       <str name="name">default</str> 
       <str name="field">spell</str> 
       <str name="spellcheckIndexDir">spellchecker</str> 
      </lst> 
</searchComponent> 

<requestHandler name="/spell" class="solr.SearchHandler" startup="lazy"> 
      <lst name="defaults"> 
       <str name="spellcheck.onlyMorePopular">true</str> 
       <str name="spellcheck.extendedResults">false</str> 
       <str name="spellcheck.count">1</str> 
      </lst> 
      <arr name="last-components"> 
       <str>spellcheck</str> 
      </arr> 
</requestHandler> 

Schema.xml的:

字段類型:

<fieldType name="text" class="solr.TextField" positionIncrementGap="100"> 
      <analyzer type="index"> 
       <tokenizer class="solr.StandardTokenizerFactory"/> 
       <filter class="solr.LowerCaseFilterFactory"/> 
       <filter class="solr.WordDelimiterFilterFactory" generateWordParts="1" generateNumberParts="1" catenateWords="1" catenateNumbers="1" catenateAll="1" splitOnCaseChange="1"/> 
       <filter class="solr.ASCIIFoldingFilterFactory" /> 
       <filter class="solr.SnowballPorterFilterFactory" language="English"/> 
       <filter class="solr.StopFilterFactory" ignoreCase="true" words="stopwords.txt"/> 
      </analyzer> 
      <analyzer type="query"> 
       <tokenizer class="solr.StandardTokenizerFactory"/> 
       <filter class="solr.LowerCaseFilterFactory"/> 
       <filter class="solr.WordDelimiterFilterFactory" generateWordParts="0" generateNumberParts="0" catenateWords="0" catenateNumbers="0" catenateAll="0" splitOnCaseChange="0"/> 
       <filter class="solr.ASCIIFoldingFilterFactory" /> 
       <filter class="solr.SnowballPorterFilterFactory" language="English"/> 
       <filter class="solr.StopFilterFactory" ignoreCase="true" words="stopwords.txt"/> 
      </analyzer> 
      <analyzer type="multiterm" > 
       <tokenizer class="solr.WhitespaceTokenizerFactory"/> 
       <filter class="solr.ASCIIFoldingFilterFactory" /> 
      </analyzer> 
     </fieldType> 


    <fieldType name="textSpell" class="solr.TextField" positionIncrementGap="100" omitNorms="true"> 
       <analyzer type="index"> 
        <tokenizer class="solr.WhitespaceTokenizerFactory"/> 
        <filter class="solr.LowerCaseFilterFactory"/> 
        <filter class="solr.StopFilterFactory" ignoreCase="true" words="stopwords.txt"/> 
        <filter class="solr.StandardFilterFactory"/> 
        <filter class="solr.RemoveDuplicatesTokenFilterFactory"/> 
       </analyzer> 
       <analyzer type="query"> 
        <tokenizer class="solr.WhitespaceTokenizerFactory"/> 
        <filter class="solr.StopFilterFactory" ignoreCase="true" words="stopwords.txt"/> 
        <filter class="solr.LowerCaseFilterFactory"/> 
        <!--<filter class="solr.SynonymFilterFactory" synonyms="synonyms.txt" ignoreCase="true" expand="true"/>--> 
        <filter class="solr.StandardFilterFactory"/> 
        <filter class="solr.RemoveDuplicatesTokenFilterFactory"/> 
       </analyzer> 
      </fieldType> 

領域:

<field name="title" type="text" indexed="true" stored="true" termVectors="true"/> 
<field name="spell" type="textSpell" indexed="true" stored="true" multiValued="true"/> 

複製場

<copyField source="title" dest="spell"/> 

我會感激你的幫助

乾杯

+0

不錯的問題...你有任何教程,你用來了解更多關於lucene ...其他然後從Solr頁的官方文檔? Ty – 2013-08-26 12:13:01

+0

@Sebastian: **基本教程:** [Solr in 5 minutes](http://www.solrtutorial.com/solr-in-5-minutes.html), [Apache Lucene快速入門導(http://www.ibm.com/developerworks/opensource/tutorials/os-apachelucene/)。 **高級教程:** [Dzone Solr教程](http://www.dzone.com/links/search.html?query=solr+lucene&x=-1335&y=-4)。 **示例:** [Drupal for Drupal](https://drupal.org/project/apachesolr), [Apache Solr for WordPress](http://wordpress.org/plugins/solr- for-wordpress /), [Solr Php Manual](http://php.net/manual/fr/book.solr.php)。 祝你好運,我希望它有幫助;) – ZendMind 2013-09-11 11:06:23

+0

**書籍:** [Lucene和Solr:權威指南](http://www.amazon.com/Lucene-Solr-Definitive-comprehensive-realtime/dp/1449359957/ref = sr_1_3?s = books&ie = UTF8&qid = 1378896499&sr = 1-3&keywords = solr), [Apache Solr 4 Cookbook](http://www.amazon.com/Apache-Solr-Cookbook-Rafal-Kuc/ DP/1782161325/REF = sr_1_1?S =書籍&即= UTF8&QID = 1378896499&SR = 1-1&關鍵字= SOLR)是。 – ZendMind 2013-09-11 11:06:57

回答

1

關於第一個問題,你可以使用WordBreakSpellChecker

至於你的第二個問題你可以設置<str name="spellcheck.onlyMorePopular">true</str><str name="spellcheck.onlyMorePopular">false</str>,看看這是否有預期的結果。

+0

嗨克萊因,你的迴應,我正在使用appach-solr3.5與php進行交互。你能告訴我如何使用這個補丁?歡呼聲 – ZendMind 2012-03-01 12:30:13

+0

WordBreakSpellChecker是appach-solr3.5中的標準嗎? – ZendMind 2012-03-01 12:43:04

+0

這不是標準。您需要將其應用於源代碼並構建新的jar/war。 – 2012-03-01 13:09:01