3

Rails 3.0 アプリ用に Solr と Sunspot gem をインストールしました。

私の目標は、あいまい検索を行うことです。たとえば、「Chatuea Marguxa」という検索語を「Château Margaux」として見つけてもらいたいとします。

実際には、まったく同じ単語しか見つからないため、ファジーはまったく機能しませんでした。

私のモデル:

  searchable do
    text :winery
  end 

私のコントローラー:

   search = Wine.search do
     fulltext 'Chatuea Marguxa'
   end 

ngram を使用して試した solr スキーマ:

<fieldType name="text" class="solr.TextField" omitNorms="false">
  <analyzer>
    <tokenizer class="solr.StandardTokenizerFactory"/>
    <filter class="solr.StandardFilterFactory"/>
    <filter class="solr.LowerCaseFilterFactory"/>
    <filter class="solr.EdgeNGramFilterFactory" minGramSize="2" maxGramSize="15"/>
  </analyzer>

私もダブルメタフォンで試しました:

<analyzer>
        <tokenizer class="solr.StandardTokenizerFactory"/>
        <filter class="solr.StandardFilterFactory"/>
        <filter class="solr.LowerCaseFilterFactory"/>
        <filter class="solr.PorterStemFilterFactory"/>
        <filter class="solr.PhoneticFilterFactory" encoder="DoubleMetaphone" inject="true"/>
      </analyzer>

どちらの場合も、応答はありませんでした。(もちろん再インデックス後)。

私は何を間違えましたか?

4

2 に答える 2

1

'~'クエリ内のすべての単語の後ろに文字を追加してみてください。このように: Chatuea~ Marguxa~. これは lucene で実装されたファジー演算子です: http://lucene.apache.org/core/3_6_0/queryparsersyntax.html#Fuzzy%20Searches

于 2015-06-12T13:11:13.653 に答える
0

一部の検索では、あいまいな宝石が明らかになりました:

逸話的なベンチマーク: 開発マシン (2011 MacBook Pro) で、Geonames から派生した場所のテーブル全体 (3.2M レコード、約 1GB のデータ) に対して

上位 10 件の一致するレコードの検索には 6ms ±1 かかります すべてのレコードのインデックスの準備には約 10 分かかります レコードを変更するときの DB クエリのオーバーヘッドは 3ms ±2 です メモリのオーバーヘッド (trigrams テーブル インデックスのフットプリント) は約 300MB です

于 2013-05-01T09:04:53.583 に答える