0

私はsolrをliferayと統合しており、スマートな次の単語の提案者を実装したいと考えています。たとえば、ドキュメントのタイトルが次の場合:

  • Solrは世界最高の検索エンジン
  • Solr は lucene 検索エンジンに実装されています
  • Solr は世界中の開発者の 80% が検索エンジンとして使用している lucene です
  • lucene は、make search の実装のためにアプリ サーバーに個別にインストールする必要はありません。

したがって、Solrと入力すると、次の結果が得られるはずです。

  1. ソル
  2. ソル ルセン
  3. ソルサーチ
  4. ソルエンジン
  5. ソルワールド

luceneと入力すると、次の結果が得られるはずです。

  1. ルセン
  2. ルセン検索
  3. ルセンエンジン
  4. ルセンワールド

私は多くの例を試しましたが、それらは機能しますが、次の問題に直面しています:

  • プレフィックスSolrから開始すると、提案が機能します。中間の単語を入力し始めると、機能しません
  • 次の最適な単語ではなく、完全な文を取得しています。

助けてください。前もって感謝します :)

4

2 に答える 2

0

ファセットを使用して、フィールドの「最も人気のある他の単語」を作成できます。検索している単語と同じ名前のファセットを無視し、その単語に afqを追加します (単語に一致するドキュメントのサブセットに限定するため)。検索する単語ごとにこれを行います (つまりsolr、生成されたファセット リストを無視しfq=title:solrてクエリに追加します)。

次のステップはfq=title:solr AND title:lucene、スキップsolrluceneて、ファセットのリストに表示されます。

これは、フィールドを適切に (たとえば、StandardTokenizer または WhitespaceTokenizer を使用して) トークン化しているため、単語ごとに 1 つのトークンを取得することを前提としています。

于 2014-08-22T20:14:55.753 に答える