Blame view

lib/mirimiri/query.rb 3.61 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
aa386f553   Romain Deveaud   changes in query,...
29
      def initialize(corpus,count="1000",mem="1g",threads="1",offset="1",run_id="default",print_query=false,print_docs=false)
cd7432252   Romain Deveaud   adding missing files
30
31
32
        @index_path  = corpus
        @memory      = mem
        @count       = count
aa386f553   Romain Deveaud   changes in query,...
33
        @threads     = threads
cd7432252   Romain Deveaud   adding missing files
34
35
36
37
38
39
40
        @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 ...
41
42
        h = "<memory>#{@memory}</memory>
  "
cd7432252   Romain Deveaud   adding missing files
43
44
45
46
        h += "<index>#{@index_path}</index>
  "
        h += "<count>#{@count}</count>
  "
aa386f553   Romain Deveaud   changes in query,...
47
48
        h += "<threads>#{@threads}</threads>
  "
cd7432252   Romain Deveaud   adding missing files
49
50
51
52
53
54
55
        unless @baseline.nil?
          h += "<baseline>#{@baseline}</baseline>
  " 
        else
          h += "<rule>#{@rule}</rule>
  "
        end
845768f8a   Romain Deveaud   creating a group ...
56
57
        h += "<trecFormat>true</trecFormat>
  "
cd7432252   Romain Deveaud   adding missing files
58
59
60
61
62
63
64
65
66
67
68
69
        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
70

aa386f553   Romain Deveaud   changes in query,...
71
    class IndriQueryOld < Query
845768f8a   Romain Deveaud   creating a group ...
72
      attr_accessor :id, :query, :rule
cd7432252   Romain Deveaud   adding missing files
73

845768f8a   Romain Deveaud   creating a group ...
74
      def initialize(id,query)
cd7432252   Romain Deveaud   adding missing files
75
76
77
78
79
        @id     = id
        @query  = query
      end
  
      def to_s
845768f8a   Romain Deveaud   creating a group ...
80
81
        h = "<query>
  "
cd7432252   Romain Deveaud   adding missing files
82
83
84
85
86
87
        h += "<number>#{@id}</number>
  "
        h += "<text>#{@query}</text>
  "
        h += "</query>
  "
845768f8a   Romain Deveaud   creating a group ...
88
89
90
  
        h
      end
ca96fb31f   romain   exec method for I...
91
92
93
94
  
      def exec params
        `IndriRunQuery -query='#{@query}' -index=#{params.index_path} -count=#{params.count} -rule=method:dirichlet,mu:2500 -trecFormat`
      end
845768f8a   Romain Deveaud   creating a group ...
95
    end
aa386f553   Romain Deveaud   changes in query,...
96
97
98
99
    class IndriQuery < Query
      attr_accessor :query, :count, :sm_method, :sm_param, :sm_value, :args
  
      def initialize atts={},args=nil
e0e33fca0   Romain Deveaud   new way of queryi...
100
        raise ArgumentError, 'Argument 1 must be a Hash' unless atts.is_a? Hash
aa386f553   Romain Deveaud   changes in query,...
101
102
103
        atts.each do |k,v|
          instance_variable_set("@#{k}", v) unless v.nil?
        end
e0e33fca0   Romain Deveaud   new way of queryi...
104
        raise ArgumentError, 'Argument 2 must be a String' unless (args.is_a?(String) || args.nil?)
aa386f553   Romain Deveaud   changes in query,...
105
106
107
        @args = args 
      end
    end
845768f8a   Romain Deveaud   creating a group ...
108
109
    class IndriQueries
      attr_accessor :params, :queries
e0e33fca0   Romain Deveaud   new way of queryi...
110
111
      def initialize params
  #      @queries = queries    
845768f8a   Romain Deveaud   creating a group ...
112
113
  
        @params = params
e0e33fca0   Romain Deveaud   new way of queryi...
114
        @queries = {}
845768f8a   Romain Deveaud   creating a group ...
115
116
117
118
119
        # 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
e0e33fca0   Romain Deveaud   new way of queryi...
120
121
122
      def push id,query
        @queries[id.to_i] = query
      end
845768f8a   Romain Deveaud   creating a group ...
123
124
125
126
      def to_s
        h = "<parameters>
  "
        h += @params.to_s
e0e33fca0   Romain Deveaud   new way of queryi...
127
128
129
130
131
132
133
134
135
136
137
        h += @queries.sort { |a,b| a[0] <=> b[0] }.collect do |q|
              "<query>
  " +
              "<number>#{q[0]}</number>
  " +
              "<text>#{q[1]}</text>
  " +
              "</query>
  "
        end.join "" 
  #      h += @queries.collect { |q| q.to_s }.join ""
cd7432252   Romain Deveaud   adding missing files
138
139
140
141
142
143
144
        h += "</parameters>"
  
        h
      end
    end
  
  end