qiita-elasticsearch 0.6.0 → 0.7.0
Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 2401f130b8898fe667da24ced430b7a6b27ebf3b
|
4
|
+
data.tar.gz: 9e8f3e9749b77ae32765f1c8837cb5ea796584da
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: e560c3b18f170169dec4d93e3a3570ad02cbb95eec3f43540b010f92123729c4b26d74aa00490472b0728371280e9718645a8adabcebf97382755f93825f108a
|
7
|
+
data.tar.gz: e7bc6318e4a946680004adedffe1d294bb5e4fa090be530bd1ba36c5304a42b515b65dedc5db0ae557b029d7ac107cb8ad5c1ccf16184c7253a9153585d65b08
|
data/CHANGELOG.md
CHANGED
@@ -3,13 +3,23 @@ require "qiita/elasticsearch/token"
|
|
3
3
|
module Qiita
|
4
4
|
module Elasticsearch
|
5
5
|
class FilterableToken < Token
|
6
|
+
EDIT_PERMISSION_COEDITING = 2
|
7
|
+
|
6
8
|
# @return [Hash]
|
7
9
|
def to_hash
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
10
|
+
if field_name == "is" && term == "coediting"
|
11
|
+
{
|
12
|
+
"term" => {
|
13
|
+
"edit_permission" => EDIT_PERMISSION_COEDITING,
|
14
|
+
},
|
15
|
+
}
|
16
|
+
else
|
17
|
+
{
|
18
|
+
"term" => {
|
19
|
+
@field_name => proper_cased_term,
|
20
|
+
},
|
21
|
+
}
|
22
|
+
end
|
13
23
|
end
|
14
24
|
end
|
15
25
|
end
|
@@ -6,7 +6,7 @@ require "qiita/elasticsearch/tokenizer"
|
|
6
6
|
module Qiita
|
7
7
|
module Elasticsearch
|
8
8
|
class Query
|
9
|
-
DEFAULT_SORT = ["_score"]
|
9
|
+
DEFAULT_SORT = [{ "created_at" => "desc" }, "_score"]
|
10
10
|
|
11
11
|
# @param [Array<Qiita::Elasticsearch::Token>] tokens
|
12
12
|
# @param [Hash] query_builder_options For building new query from this query
|
@@ -20,7 +20,11 @@ module Qiita
|
|
20
20
|
# @return [Qiita::Elasticsearch::Query]
|
21
21
|
# @example query.append_field_token(field_name: "tag", term: "Ruby")
|
22
22
|
def append_field_token(field_name: nil, term: nil)
|
23
|
-
|
23
|
+
if has_field_token?(field_name: field_name, term: term)
|
24
|
+
self
|
25
|
+
else
|
26
|
+
build_query([*@tokens, "#{field_name}:#{term}"].join(" "))
|
27
|
+
end
|
24
28
|
end
|
25
29
|
|
26
30
|
# @param [String] field_name
|
@@ -30,7 +34,7 @@ module Qiita
|
|
30
34
|
def delete_field_token(field_name: nil, term: nil)
|
31
35
|
build_query(
|
32
36
|
@tokens.reject do |token|
|
33
|
-
token.field_name == field_name && token.term == term
|
37
|
+
(field_name.nil? || token.field_name == field_name) && (term.nil? || token.term == term)
|
34
38
|
end.join(" ")
|
35
39
|
)
|
36
40
|
end
|
@@ -40,7 +44,7 @@ module Qiita
|
|
40
44
|
# @example query.has_field_token?(field_name: "tag", term: "Ruby")
|
41
45
|
def has_field_token?(field_name: nil, term: nil)
|
42
46
|
@tokens.any? do |token|
|
43
|
-
token.field_name == field_name && token.term == term
|
47
|
+
(field_name.nil? || token.field_name == field_name) && (term.nil? || token.term == term)
|
44
48
|
end
|
45
49
|
end
|
46
50
|
|
@@ -58,9 +62,9 @@ module Qiita
|
|
58
62
|
case @tokens.select(&:sort?).last.try(:term)
|
59
63
|
when "created-asc"
|
60
64
|
[{ "created_at" => "asc" }, "_score"]
|
61
|
-
when "created-desc"
|
62
|
-
[{ "created_at" => "desc" }, "_score"]
|
63
65
|
when "related-asc"
|
66
|
+
["_score"]
|
67
|
+
when "related-desc"
|
64
68
|
[{ "_score" => "desc" }]
|
65
69
|
when "stocks-asc"
|
66
70
|
[{ "stocks" => "asc" }, "_score"]
|
@@ -12,6 +12,7 @@ module Qiita
|
|
12
12
|
DEFAULT_FILTERABLE_FIELDS = []
|
13
13
|
DEFAULT_HIERARCHAL_FIELDS = []
|
14
14
|
DEFAULT_INT_FIELDS = []
|
15
|
+
EXTRA_FILTERABLE_FIELDS = ["is", "sort"]
|
15
16
|
|
16
17
|
TOKEN_PATTERN = /
|
17
18
|
(?<token_string>
|
@@ -76,7 +77,7 @@ module Qiita
|
|
76
77
|
end
|
77
78
|
|
78
79
|
def filterable_fields
|
79
|
-
@filterable_fields || DEFAULT_FILTERABLE_FIELDS
|
80
|
+
(@filterable_fields || DEFAULT_FILTERABLE_FIELDS) | EXTRA_FILTERABLE_FIELDS
|
80
81
|
end
|
81
82
|
|
82
83
|
def hierarchal_fields
|