2017-07-11 21 views
0

私はelasticsearchインスタンスの設定にデフォルトのインデックスがあります。 10000のテキスト文書が索引付けされており、スペースに依存しない問合せを実行したいと考えています。私は以下のような検索をしたい。インデックス内の弾性探索独立した検索

ケース1スペースクエリでスペースなし:

index data : 123 456 43 
query data :12345643 

ケースクエリで2スペースのインデックスに空き:あなたは、クエリの上に見ることができるように

index data : 12345643 
query data : 123 456 43 

しませんクエリデータは1項であり、インデックスデータは3項であるからである。空間差を有するケース2

場合のその逆3個の部分一致:

index data : 12345643 
query data : 123 4 5 

ケース4個の部分の付加データと一致する(末尾/先頭)と空間差:

index data : 12345643 
query data : 123 4 54 

index data : 1234564343 
query data : 123 4 5 

私はスペースを削除して索引を作成し、完全な内容を1つの単語として索引することを考えましたが、case3およびcase4でどのように動作するかわかりません。私はこの方法のフォールバックも知らない。

+1

私はスペースを削除し、(エッジ - )ngramsのカスタムアナライザを作成します。 – Val

+0

ありがとうございました。私はそれを試して、あなたに知らせるでしょう。これは、ケース3とケース4についても、索引または照会のいずれかの追加データと一致します。 – The6thSense

+1

はい、検索時にedge-ngramも使用すると、接頭辞と接尾辞を一致させることができます – Val

答えて

1

スペースを削除し、(edge-ngrams(トークナイザまたはトークンフィルタのいずれか)のカスタムインデックスタイムアナライザを作成します。

接頭辞と接尾辞を一致させる場合は、検索時にedge-ngram tokenizer/token-filterを使用することもできます。