2012-01-26 22 views
0

私はエンティティに関連するエンティティに関連するユーザのコメントをエンティティIDでインデックスしています。コメントスキーマの例:今すぐSOLR関連のフレーズ検索

<fields> 
    <field name="entity_id" type="sint" indexed="true" stored="true" default=0/> 
    <field name="comment_id" type="sint" indexed="true" stored="true" default=0/> 
    <field name="comment_text" type="text" indexed="true" stored="true" default=""/> 
</fields> 

、私は特定のエンティティのすべてのコメントを照会、およびコメントのセットで数回繰り返しフレーズを得ることができるようにしたいです。コメントの

例:

  • これは、あなたが本当にXYZを訪問するべきであるは絶好の場所
  • です。 偉大なの場所と蜂の
  • あなたがすばらしい瞬間を過ごしたい場合は、これはとなります。です。
  • 偉大な人々と素晴らしい場所

あなたは上記の例でわかるように、絶好の場所が数回繰り返され、また、場所をハチします。私はSOLRから返されたこのフレーズを必要とし、私はSOLRファセットで試しましたが、フレーズではなく単語だけを得ることができました(Building a tag cloud with solr)。

http://localhost:8984/solr/select/?qt=tvrh&q=entity_id:12345&start=0&rows=0&facet=true&facet.field=comment_text&facet.minCount=1&facet.limit=50 

結果だった...

<lst name="facet_counts"> 
    <lst name="facet_queries"/> 
    <lst name="facet_fields"> 
    <lst name="comment_text"> 
    <int name="epic">22</int> 
    <int name="bar">18</int> 
    <int name="you">16</int> 
    <int name="quiver">15</int> 
    <int name="happi">14</int> 
    <int name="your">14</int> 
    <int name="hour">13</int> 
    <int name="drink">12</int> 
    <int name="come">11</int> 
    <int name="get">11</int> 
    <int name="free">9</int> ... 

注:私がしようとしていた

クエリは、こののようなものだったこれらの結果は一例と関連していない以前投稿されたコメント:)。

ありがとうございました。

答えて

1

ShingleFilterFactoryをご覧になりましたか?このフィルタを使用すると、トークンを組み合わせて索引付けすることができます。あなたはcomment_textのコピーだけのフィールドを作成し、フィールドでこのフィルタを使用し、そのフィールドからファセットを取得することができます

+0

私は確かにそれを試してみます:) – jMn

+0

コメントを検索しようとすると問題が発生する別のエンティティについては、以前の検索結果がありますか?それを何らかの形で削除し、エンティティ関連のコメントだけで持続できますか? – jMn

+0

私はあなたが何を意味するか正確にはわかりません。いくつか例を挙げてください。フィルタクエリを使用して、関連するデータのみを取得するようにしていますか? –