現在、文字列から特殊文字を取り除くため[^a-zA-Z0-9]
に Java の関数を使用しています。replaceAll
ハイフンと数字が混在する場合は、ハイフンを許可する必要があることに気付きました。
ハイフンが一致しない例:
- 1-2-3
- -1-23-4562
- --1---2--3---4-
- --9--a--7
- 425-12-3456
ハイフンが一致する例:
- --a--b--c
- ウォルマート
この SO の質問を参照として使用して、後者の基準を満たす正規表現を策定したと思いますが、それを元の正規表現と組み合わせる方法はわかりません[^a-zA-Z0-9]
。
インデックス作成時に Lucene の標準トークナイザーが機能する方法のため、Lucene 検索文字列に対してこれを実行したいと考えています。
トークンに数字が含まれていない限り、単語をハイフンで分割します。数字が含まれている場合、トークン全体が製品番号として解釈され、分割されません。