Blame view

lib/mirimiri/query.rb 2.65 KB
cd7432252   Romain Deveaud   adding missing files
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
  #!/usr/bin/env ruby
  
  #--
  # This file is a part of the mirimiri library
  #
  # Copyright (C) 2010-2011 Romain Deveaud <romain.deveaud@gmail.com>
  #
  # This program is free software: you can redistribute it and/or modify
  # it under the terms of the GNU General Public License as published by
  # the Free Software Foundation, either version 3 of the License, or
  # (at your option) any later version.
  #
  # This program is distributed in the hope that it will be useful,
  # but WITHOUT ANY WARRANTY; without even the implied warranty of
  # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  # GNU General Public License for more details.
  #
  # You should have received a copy of the GNU General Public License
  # along with this program.  If not, see <http://www.gnu.org/licenses/>.
  #++
  
  class Query
  end
  
  module Indri
  
    class Parameters
      attr_accessor :index_path, :memory, :count, :offset, :run_id, :print_query, :print_docs, :rule, :baseline
845768f8a   Romain Deveaud   creating a group ...
29
      def initialize(corpus,count="1000",mem="1g",offset="1",run_id="default",print_query=false,print_docs=false)
cd7432252   Romain Deveaud   adding missing files
30
31
32
33
34
35
36
37
38
39
        @index_path  = corpus
        @memory      = mem
        @count       = count
        @offset      = offset
        @run_id      = run_id
        @print_query = print_query ? "true" : "false"
        @print_docs  = print_docs  ? "true" : "false"
      end
  
      def to_s
845768f8a   Romain Deveaud   creating a group ...
40
41
        h = "<memory>#{@memory}</memory>
  "
cd7432252   Romain Deveaud   adding missing files
42
43
44
45
46
47
48
49
50
51
52
        h += "<index>#{@index_path}</index>
  "
        h += "<count>#{@count}</count>
  "
        unless @baseline.nil?
          h += "<baseline>#{@baseline}</baseline>
  " 
        else
          h += "<rule>#{@rule}</rule>
  "
        end
845768f8a   Romain Deveaud   creating a group ...
53
54
        h += "<trecFormat>true</trecFormat>
  "
cd7432252   Romain Deveaud   adding missing files
55
56
57
58
59
60
61
62
63
64
65
66
        h += "<queryOffset>#{@offset}</queryOffset>
  "
        h += "<runID>#{@run_id}</runID>
  "
        h += "<printQuery>#{@print_query}</printQuery>
  "
        h += "<printDocuments>#{@print_docs}</printDocuments>
  "
  
        h
      end
    end
cd7432252   Romain Deveaud   adding missing files
67

845768f8a   Romain Deveaud   creating a group ...
68
69
    class IndriQuery < Query
      attr_accessor :id, :query, :rule
cd7432252   Romain Deveaud   adding missing files
70

845768f8a   Romain Deveaud   creating a group ...
71
      def initialize(id,query)
cd7432252   Romain Deveaud   adding missing files
72
73
74
75
76
        @id     = id
        @query  = query
      end
  
      def to_s
845768f8a   Romain Deveaud   creating a group ...
77
78
        h = "<query>
  "
cd7432252   Romain Deveaud   adding missing files
79
80
81
82
83
84
        h += "<number>#{@id}</number>
  "
        h += "<text>#{@query}</text>
  "
        h += "</query>
  "
845768f8a   Romain Deveaud   creating a group ...
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
  
        h
      end
    end
  
    class IndriQueries
      attr_accessor :params, :queries
  
      def initialize(params,*queries)
        @queries = queries    
  
        @params = params
        # Here we set the default retrieval model as Language Modeling
        # with a Dirichlet smoothing at 2500.
        # TODO: maybe a Rule class...
        @params.rule  = 'method:dirichlet,mu:2500' if @params.rule.nil?
      end
  
      def to_s
        h = "<parameters>
  "
        h += @params.to_s
        h += @queries.collect { |q| q.to_s }.join ""
cd7432252   Romain Deveaud   adding missing files
108
109
110
111
112
113
114
        h += "</parameters>"
  
        h
      end
    end
  
  end