entry : highlightFields.entrySet()) {
+ final HighlightField highlightField = entry.getValue();
+ final Text[] fragments = highlightField.fragments();
+ if (fragments != null && fragments.length != 0) {
+ final String[] texts = new String[fragments.length];
+ for (int i = 0; i < fragments.length; i++) {
+ texts[i] = fragments[i].string();
+ }
+ final String value = StringUtils.join(texts, "...");
+ docMap.put(hlPrefix + highlightField.getName(), value);
+ }
+ }
+ }
+ } catch (final Exception e) {
+ if (logger.isDebugEnabled()) {
+ logger.debug("Could not create a highlighting value: " + docMap, e);
+ }
+ }
+
+ // ContentTitle
+ final ViewHelper viewHelper = ComponentUtil.getViewHelper();
+ if (viewHelper != null) {
+ docMap.put(fessConfig.getResponseFieldContentTitle(), viewHelper.getContentTitle(docMap));
+ docMap.put(fessConfig.getResponseFieldContentDescription(), viewHelper.getContentDescription(docMap));
+ docMap.put(fessConfig.getResponseFieldUrlLink(), viewHelper.getUrlLink(docMap));
+ docMap.put(fessConfig.getResponseFieldSitePath(), viewHelper.getSitePath(docMap));
+ }
+ return docMap;
+ }
+
protected void calculatePageInfo(final int start, final int size) {
pageSize = size;
allPageCount = (int) ((allRecordCount - 1) / pageSize) + 1;
diff --git a/src/main/resources/fess_config.properties b/src/main/resources/fess_config.properties
index 17fc83a3a..26b7b880f 100644
--- a/src/main/resources/fess_config.properties
+++ b/src/main/resources/fess_config.properties
@@ -166,6 +166,8 @@ index.field.mimetype=mimetype
index.field.parent_id=parent_id
index.field.important_content=important_content
index.field.content=content
+index.field.content_minhash=content_minhash
+index.field.content_minhash_bits=content_minhash_bits
index.field.cache=cache
index.field.digest=digest
index.field.title=title
@@ -221,6 +223,10 @@ query.additional.search.fields=
query.additional.facet.fields=
query.additional.sort.fields=
query.additional.not.analyzed.fields=
+query.collapse.max.concurrent.group.results=4
+query.collapse.inner.hits.name=similar_docs
+query.collapse.inner.hits.size=0
+query.collapse.inner.hits.sorts=
query.default.languages=
query.language.mapping=\
ar=ar\n\
diff --git a/src/main/resources/fess_indices/fess.json b/src/main/resources/fess_indices/fess.json
index b9244ff2b..388220b13 100644
--- a/src/main/resources/fess_indices/fess.json
+++ b/src/main/resources/fess_indices/fess.json
@@ -406,6 +406,12 @@
"alphanum_word_filter" : {
"type" : "alphanum_word",
"max_token_length" : 20
+ },
+ "minhash_filter" : {
+ "type" : "minhash",
+ "seed" : 1,
+ "bit" : 2,
+ "size" : 64
}
},
"tokenizer": {
@@ -756,6 +762,21 @@
"lowercase",
"stemmer_en_filter"
]
+ },
+ "minhash_analyzer": {
+ "type": "custom",
+ "char_filter": [
+ "mapping_ja_filter"
+ ],
+ "tokenizer": "unigram_synonym_tokenizer",
+ "filter": [
+ "alphanum_word_filter",
+ "cjk_bigram",
+ "stopword_en_filter",
+ "lowercase",
+ "stemmer_en_filter",
+ "minhash_filter"
+ ]
}
}
}
diff --git a/src/main/resources/fess_indices/fess/doc.json b/src/main/resources/fess_indices/fess/doc.json
index 8adc945f1..c9c4f961d 100644
--- a/src/main/resources/fess_indices/fess/doc.json
+++ b/src/main/resources/fess_indices/fess/doc.json
@@ -456,6 +456,14 @@
"analyzer": "standard_analyzer",
"term_vector": "with_positions_offsets"
},
+ "content_minhash": {
+ "type": "minhash",
+ "minhash_analyzer": "minhash_analyzer",
+ "copy_bits_to": "content_minhash_bits"
+ },
+ "content_minhash_bits": {
+ "type": "keyword"
+ },
"content_length": {
"type": "long"
},
diff --git a/src/main/resources/fess_label.properties b/src/main/resources/fess_label.properties
index 3a012ae44..3fb57a596 100644
--- a/src/main/resources/fess_label.properties
+++ b/src/main/resources/fess_label.properties
@@ -217,6 +217,7 @@ labels.search_result_favorited=Liked
labels.search_click_count=Viewed ({0})
labels.search_result_more=more..
labels.search_result_cache=Cache
+labels.search_result_similar=Similar Results ({0})
labels.facet_label_title=Label
labels.facet_timestamp_title=Date Range
labels.facet_timestamp_1day=Past 24 Hours
@@ -366,6 +367,7 @@ labels.default_label_value=Default Label Value
labels.default_sort_value=Default Sort Value
labels.append_query_param_enabled=Append Params to URL
labels.login_required=Login Required
+labels.result_collapsed=Similar Result Collapsed
labels.login_link=Login Link
labels.thumbnail=Thumbnail View
labels.ignore_failure_type=Excluded Failure Type
diff --git a/src/main/resources/fess_label_en.properties b/src/main/resources/fess_label_en.properties
index f079b7b47..27d76a3c0 100644
--- a/src/main/resources/fess_label_en.properties
+++ b/src/main/resources/fess_label_en.properties
@@ -217,6 +217,7 @@ labels.search_result_favorited=Liked
labels.search_click_count=Viewed ({0})
labels.search_result_more=more..
labels.search_result_cache=Cache
+labels.search_result_similar=Similar Results ({0})
labels.facet_label_title=Label
labels.facet_timestamp_title=Date Range
labels.facet_timestamp_1day=Past 24 Hours
@@ -366,6 +367,7 @@ labels.default_label_value=Default Label Value
labels.default_sort_value=Default Sort Value
labels.append_query_param_enabled=Append Params to URL
labels.login_required=Login Required
+labels.result_collapsed=Similar Result Collapsed
labels.login_link=Login Link
labels.thumbnail=Thumbnail View
labels.ignore_failure_type=Excluded Failure Type
diff --git a/src/main/resources/fess_label_ja.properties b/src/main/resources/fess_label_ja.properties
index 1a956908c..231ccfd19 100644
--- a/src/main/resources/fess_label_ja.properties
+++ b/src/main/resources/fess_label_ja.properties
@@ -210,6 +210,7 @@ labels.search_result_favorited=Liked
labels.search_click_count=\u30af\u30ea\u30c3\u30af\u6570 ({0})
labels.search_result_more=\u8a73\u7d30..
labels.search_result_cache=\u30ad\u30e3\u30c3\u30b7\u30e5
+labels.search_result_similar=\u985e\u4f3c\u7d50\u679c ({0})
labels.facet_label_title=\u30e9\u30d9\u30eb
labels.facet_timestamp_title=\u671f\u9593
labels.facet_timestamp_1day=24\u6642\u9593\u4ee5\u5185
@@ -359,6 +360,7 @@ labels.default_label_value=\u30c7\u30d5\u30a9\u30eb\u30c8\u306e\u30e9\u30d9\u30e
labels.default_sort_value=\u30c7\u30d5\u30a9\u30eb\u30c8\u306e\u30bd\u30fc\u30c8\u5024
labels.append_query_param_enabled=\u691c\u7d22\u30d1\u30e9\u30e1\u30fc\u30bf\u306e\u8ffd\u52a0
labels.login_required=\u30ed\u30b0\u30a4\u30f3\u304c\u5fc5\u8981
+labels.result_collapsed=\u91cd\u8907\u7d50\u679c\u306e\u6298\u308a\u7573\u307f
labels.login_link=\u30ed\u30b0\u30a4\u30f3\u30ea\u30f3\u30af\u8868\u793a
labels.thumbnail=\u30b5\u30e0\u30cd\u30a4\u30eb\u8868\u793a
labels.ignore_failure_type=\u9664\u5916\u3059\u308b\u30a8\u30e9\u30fc\u306e\u7a2e\u985e
diff --git a/src/main/webapp/WEB-INF/view/admin/general/admin_general.jsp b/src/main/webapp/WEB-INF/view/admin/general/admin_general.jsp
index 6ea5fa837..c694ca043 100644
--- a/src/main/webapp/WEB-INF/view/admin/general/admin_general.jsp
+++ b/src/main/webapp/WEB-INF/view/admin/general/admin_general.jsp
@@ -69,6 +69,18 @@
+
diff --git a/src/main/webapp/WEB-INF/view/searchResults.jsp b/src/main/webapp/WEB-INF/view/searchResults.jsp
index cb26045be..f524adf64 100644
--- a/src/main/webapp/WEB-INF/view/searchResults.jsp
+++ b/src/main/webapp/WEB-INF/view/searchResults.jsp
@@ -56,6 +56,14 @@
+
+
+
+
+
+