が、私は新たなんだ特定のキーワードを含むインデックスフィールドをフェッチし、ここで私の実装は次のとおりです。 は、私は私が持っている私のデータベース内のエンティティとその場のHibernate Searchは:Hibernateの検索を使用しての
@AnalyzerDef(name = "ngram",
tokenizer = @TokenizerDef(factory = StandardTokenizerFactory.class),
filters = {
@TokenFilterDef(factory = StandardFilterFactory.class),
@TokenFilterDef(factory = LowerCaseFilterFactory.class),
@TokenFilterDef(factory = StopFilterFactory.class),
@TokenFilterDef(factory = NGramFilterFactory.class,
params = {
@Parameter(name = "minGramSize", value = "3"),
@Parameter(name = "maxGramSize", value = "3") })
}
)
@Indexed
@Entity
@Table(name="USERS")
public class User {
@Id
@GeneratedValue(strategy=GenerationType.IDENTITY)
private Integer id;
@Field
@Column(nullable=false,length=30,name="first_name")
private String firstName;
@Column(nullable=false,length=30,name="last_name")
private String lastName;
@Column(length=128)
@Field([email protected](definition="ngram"))
private String login;
@Column(length=255)
private String password;
で始まります以下のデータを含む2つのレコード:
| id | first_name | last_name |ログイン|パスワード|
| 1 | NULL | NULL |メドナブリ| * | | 2 | NULL | NULL |メディナブリ| * |
私は結果のログインを表示するフィールドのログインに関する研究を適用するときに私が取得:
入力されたキーワードを:mednabli mednabli
入力されたキーワード:med-
結果をmedが
結果:
nabli:(何も)私は、MED-nabli取得する入力されたキーワードを必要としながら、
結果:mednabli私はmednabli
mednabli入力されたキーワードを取得する必要がありながら:私はmednabli mednabli
を取得する必要がありながら、そうでください(何も):
結果をkamedそこには、検索結果を得るための方法があります。アナライザーは、私のアプリケーションを動作させるためにそれに依存する必要があります。
kamedというキーワードの場合、この最後は3-gramに分割されます:kam、ame、medとなるので、 "med"を含むすべてのログインを取得する必要があります。返信のためにあなたのソリューションTyを試してみます:) –