7

数十億の文字列から一般的な部分文字列検索を行いたい。「ubst」というクエリでも「substr」にヒットできるようにしたいので、一般的な全文検索とは少し要件が異なります。

Lucene または Sphinx はこれを行うことができますか? そうでない場合、これを行うための最良の方法は何だと思いますか?

4

3 に答える 3

5

この場合の最適なインデックス構造はサフィックス ツリーです 。Lucene はこのタイプのインデックスを実装していないため、部分文字列の検索が遅くなります。しかし、lucene にはプレフィックス ツリー インデックスがあり、プレフィックスで用語を検索すると高速に検索できます。

于 2011-09-26T12:16:44.473 に答える
0

Sphinxは、2011 年 4 月 22 日のバージョン 2.0.1-beta 以降、効果的な部分文字列検索をサポートしています

2.1.1ベータ版でやってみました。正しく動作しているようです。辞書の型についてはマニュアルのエントリを参照し、型について読んでくださいkeywords

2.0.6 リリース バージョンを使用しようとすると、非効率的な crc インデックスにフォールバックし、インデックス作成中に次の警告が表示されました。

WARNING: min_infix_len is not supported yet with dict=keywords; using dict=crc

私の最小限の構成ファイル:

source sour
{
  type = xmlpipe2
  xmlpipe_command = type C:\Temp\1\sphinx\input.xml
}

index inde
{
  source = sour
  path = testpa
  enable_star = 1
  dict = keywords
  charset_type = utf-8
  min_infix_len = 1
}
于 2013-03-22T09:38:43.323 に答える
0

Lucene は、利用可能な最良のオプションの 1 つです。Lucene は部分文字列検索をサポートしているため、ubst は substr を返します。

適切な言語実装については、http://wiki.apache.org/lucene-java/LuceneImplementationsを参照してください。

于 2011-07-28T04:26:42.947 に答える