2012-02-29 2 views
7

を使用もしかして、私はスペルチェックのコンポーネントを統合しますが、私はいくつかの問題を抱えて:まずSolrには、あなたが、私は私のアプリケーションのためのSolr(スペルチェックコンポーネント)

:私はスペースで区切って用語を入力すると は、彼らが私に補正を与えるが各用語について

例:"ワットTERS" =>"何用語"が、真のワターズ

セカンドである:私はそうと入力すると 私のフレーズは間違った言葉で。他の用語は正しいものの、すべての用語に対して呪文を適用します。

例: "Difreencesでlankuage利用規約" => "言語使用の違い変換"。

<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:

フィールドタイプ:

真は

"言語使用の慣習の違いは、" これはsolrconfig.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"/> 

私はあなたの第二についてはWordBreakSpellChecker

を使用することができ、あなたの最初の問題のために

乾杯

+0

素敵な質問...あなたがluceneについてもっと知りたかったチュートリアルはありますか?それ以外のSolrページの公式文書ですか? Ty –

+0

@セバスチャン: **基本チュートリアル:** [Solr 5分](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の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

+0

**書籍:** [Lucene and 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 = books&ie = UTF8&qid = 1378896499&sr = 1-1&keywords = solr) – ZendMind

答えて

1

をあなたの助けをいただければ幸いですあなたが設定できる問題<str name="spellcheck.onlyMorePopular">true</str><str name="spellcheck.onlyMorePopular">false</str>と期待される結果があるかどうかを確認してください。

+0

こんにちはKlein、thnkさんの回答には、appach-solr3.5を使ってphpとやり取りしています。このパッチをどうやって使うことができますか? Cheers – ZendMind

+0

appach-solr3.5のWordBreakSpellCheckerは標準ですか? – ZendMind

+0

これは標準ではありません。あなたはそれをソースに適用し、新しいjar/warを構築する必要があります。 –

関連する問題