データベースから記事を検索する検索クエリを作成しようとしています。ユーザーが入力した検索文字列を取得して、可能な検索語の特定のセットを探したいと思います。ユーザーが「2011 年のドイツの平均給与のリスト」という検索文字列を入力した場合、検索する用語のリストを生成したいと思います。文字列全体と、連続した単語の部分文字列を探すことにしました。つまり、「2011 年のドイツのリスト」ではなく、「平均給与のリスト」と「2011 年のドイツ」を検索したいということです。
これまでのところ、検索語を生成するためのコードは次のとおりです。
$searchString = "listing of average salaries in germany for 2011";
$searchTokens = explode(" ", $searchString);
$searchTerms = array($searchString);
$tokenCount = count($searchTokens);
for($max=$tokenCount - 1; $max>0; $max--) {
$termA = "";
$termB = "";
for ($i=0; $i < $max; $i++) {
$termA .= $searchTokens[$i] . " ";
$termB .= $searchTokens[($tokenCount-$max) + $i] . " ";
}
array_push($searchTerms, $termA);
array_push($searchTerms, $termB);
}
print_r($searchTerms);
そして、この用語のリストが表示されます:
- 2011 年のドイツの平均給与のリスト
- ドイツの平均給与のリスト
- 2011 年のドイツの平均給与
- ドイツの平均給与のリスト
- 2011 年のドイツの平均給与
- の平均給与のリスト
- 2011 年のドイツの給与
- 平均給与のリスト
- 2011年のドイツで
- 平均のリスト
- 2011年のドイツ
- のリスト
- 2011年
- リスティング
- 2011年
取得方法がわからないのは、欠落している用語です。
- ドイツの平均給与の
- ドイツの平均給与の
- のドイツの平均給与
- の平均給与
- ドイツの平均給与
- のドイツでの給与
- 等...
アップデート
私は「パワーセット」を探しているわけではないので、このような答えやこれは無効です。たとえば、用語のリストにこれらを入れたくない:
- 平均的なドイツ
- 2011年の給与一覧
- ドイツの
連続した単語のみを探しています。