Home Php C# Sql C C++ Javascript Python Java Go Android Git Linux Asp.net Django .net Node.js Ios Xcode Cocoa Iphone Mysql Tomcat Mongodb Bash Objective-c Scala Visual-studio Apache Elasticsearch Jar Eclipse Jquery Ruby-on-rails Ruby Rubygems Android-studio Spring Lua Sqlite Emacs Ubuntu Perl Docker Swift Amazon-web-services Svn Html Ajax Xml Java-ee Maven Intellij-idea Rvm Macos Unix Css Ipad Postgresql Css3 Json Windows-server Vue.js Typescript Oracle Hibernate Internet-explorer Github Tensorflow Laravel Symfony Redis Html5 Google-app-engine Nginx Firefox Sqlalchemy Lucene Erlang Flask Vim Solr Webview Facebook Zend-framework Virtualenv Nosql Ide Twitter Safari Flutter Bundle Phonegap Centos Sphinx Actionscript Tornado Register | Login | Edit Tags | New Questions | 繁体 | 简体


10 questions online user: 6

0
votes
answers
57 views
+10

Solr中Enum FieldType上的SimpleFacets.lamba和NumberFormatException錯誤

0

有沒有人曾經嘗試過在枚舉字段上排序?我有一個字段定義爲一個具有約1000個不同值的自定義enumConfig.xml文件的枚舉。如果我努力使由它這個枚舉字段或排序範圍查詢,我得到這個異常:Solr中Enum FieldType上的SimpleFacets.lamba和NumberFormatException錯誤

Invalid shift value in prefixCoded bytes (is encoded value really an INT?). 

在配置文件中的值有兩個數字和字符在其中,如果是相關的/重要.. 。

它給了我一個討厭的異常,如果我嘗試小的領域,也:

"msg": "Exception during facet.field: ORBIT", 
"trace": "org.apache.solr.common.SolrException: Exception during 
facet.field: ORBIT
	at org.apache.solr.request.SimpleFacets.lambda$getFacetFieldCounts$0(SimpleFacets.java:766) 

說,這是一個NumberFormatException的......?

儘管我只在指定「facet.limit = -1」時纔會出現該異常,但它適用於較小的值。

沙发
0
0

如果您對枚舉配置文件進行更改(即使您重新編制索引),也會發生類似這樣的奇怪錯誤。我必須徹底刪除我的收藏集才能使其正常工作。

0
votes
answers
73 views
+10

Solr雲:等待4000ms後未找到註冊的領導者

-1

我已經創建了6個集合,每個集合有3個分片和2個副本(solr版本5.5.0)。幾天後我的設置工作正常。但幾天之後,我收到以下錯誤:Solr雲:等待4000ms後未找到註冊的領導者

Error while trying to recover. core=Collection1_shard3_replica2:org.apache.solr.common.SolrException: No registered leader was found after waiting for 4000ms , collection: Collection1 slice: shard3 at org.apache.solr.common.cloud.ZkStateReader.getLeaderRetry(ZkStateReader.java:607) at org.apache.solr.common.cloud.ZkStateReader.getLeaderRetry(ZkStateReader.java:593) at org.apache.solr.cloud.RecoveryStrategy.doRecovery(RecoveryStrategy.java:308) at org.apache.solr.cloud.RecoveryStrategy.run(RecoveryStrategy.java:224) at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511) at java.util.concurrent.FutureTask.run(FutureTask.java:266) at org.apache.solr.common.util.ExecutorUtil$MDCAwareThreadPoolExecutor$1.run(ExecutorUtil.java:231) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) at java.lang.Thread.run(Thread.java:745)

我試圖重新啓動飼養員和Solr都,也增加堆內存10 GB。但仍然有問題。

+0

你在(K)VM或裸機上運行? – bigdatadev

+0

你的規格是什麼?你使用了多少臺機器和多少個CPU?你的環境是否被克伯化? – bigdatadev

沙发
0
-1

我們遇到與3節點機器相同的問題(每個節點6個CPU和30GB內存)。以下是我試圖找到解決方案的步驟。

我們已經嘗試過,並沒有工作:

  1. 停止Solr的進程並重新啓動Solr的JVM
  2. 重新收集
  3. 增加/減少內存,但是這只是暫時的修復一天左右
  4. Solr GC調整: https://wiki.apache.org/solr/SolrPerformanceProblems#GC_pause_problems

什麼固定的「沒有註冊的領導者發現」問題:

  1. 減少碎片的數量,基本上我們oversharding。我們將碎片的數量從6個減少到3個,並保留了3個副本。這意味着每個節點現在有3個碎片。
  2. 但是,因爲我們每秒鐘編制了10,000條消息的索引。我也想知道我們的CPU在做什麼。所以我監視了CPU負載和CPU IO。我發現CPU一直在最大限度地工作,造成了很高的IO等待時間,我認爲這造成了最大的麻煩(見下圖)。

由於IO等待時間很長,複製品很難保持同步。 我減少了工作量(發送到solr的消息),以便索引不像以前那樣快速增長。這有助於使一切恢復正常。我的Solr集羣現在是綠色的一段時間,並沒有遇到任何「選舉問題」。 IO等待時間減少到25ms以下,CPU使用率約爲70%,而不是幾乎100%。

一般來說,解決這樣的問題是非常困難的。由於Solr集羣可能會在幾天內正常工作(甚至在其他帖子中看過幾個月)。監視進入Solr節點的IO等待甚至流量。如果發生交通峯值,(每日!)指數可能變得太大。您也可以添加更多節點和分割碎片,這可以減少一臺機器的負載。我選擇減少流向Solr機器的流量,因爲我們使用Solr作爲審計存儲,並且不需要審計日誌的一部分。

CPU load on one of the Solr Hosts enter image description here

+0

這應該作爲對原始問題的評論或作爲單獨問題發佈。另外 - 如果您尚未使用它,請務必使用外部動物園管理員合奏進行測試。 – MatsLindh

+0

這並沒有真正回答這個問題。如果您有不同的問題,可以通過單擊[提問](https://stackoverflow.com/questions/ask)來提問。您也可以[添加賞金](https://stackoverflow.com/help/privileges/set-bounties)來更多地關注這個問題。 - [來自評論](/ review/low-quality-posts/18901616) – iklinac

+0

我認爲我的帖子現在正確回答問題 – bigdatadev

0
votes
answers
63 views
+10

用於索引和查詢的Solr字段別名

0

我在Solr索引中有一組文檔,其中包含字段exact_title和alternative_title。我希望能夠使用字段標題進行搜索。 換句話說,查詢title:Hello World應該返回具有exact_title或alternative_title「Hello World」的文檔用於索引和查詢的Solr字段別名

是否有可能在索引期間爲字段定義別名?

+0

是這些領域的不同還是什麼?他們背後的想法是什麼? – Mysterion

+0

我有一套書,其中一些有兩個標題,一個主標題和一個替代標題。奇怪,但不是我的數據集。我希望這兩個標題都可以在同一字段下搜索,並且數據複製的數據量最小。 – orestis

沙发
0
0

我解決了在schema.xml文件中定義複製字段。

例子:

<field name="title_txt" type="text_general" indexed="true" stored="false" multiValued="true"/> 
<field name="exact_title_txt" type="text_general" indexed="true" stored="true" multiValued="false"/> 
<field name="alternative_title_txt" type="text_general" indexed="true" stored="true" multiValued="false"/> 
<copyField source="exact_title_txt" dest="title_txt"/> 
<copyField source="alternative_title_txt" dest="title_txt"/> 
+0

由於這兩個字段的類型和內容都完全相同,所以我必須問:這能解決什麼問題? – MatsLindh

+0

我想用兩個或更多的字段搜索使用相同的傘字段 – orestis

+0

好的,當你添加更多的字段和兩個copyField指令時,它是有道理的。 – MatsLindh

0
votes
answers
52 views
+10

Alternatives to search software/servers to retrieving IDs for all matching documents

I am trying to figure out how to filter a very large set of documents based on keyword matching.

I have 20+million entries with ID and (several) text fields in my SQL database and I want to get all IDs for which the text matches a set of keywords. This includes more complex expressions like:

 (term1 NEAR term2 NEAR term3) AND NOT "A phrase" AND @fieldXYZ "wildcards%aswell*"

The results do not need to be scored, sorted or ranked in any way.

From what I understand the power of Lucene/Solr, Sphinx and ElasticSearch is to give back the TOP documents super fast but they are not really intended to give back ALL documents.

I know that it is possible to do this with a custom Collector in Lucene (see What's the most efficient way to retrieve all matching documents from a query in Lucene, unsorted?) and possibly with Cursors/Scrolling in Solr/Elasticsearch but I am wondering if there is any other technology that is specifically optimized for this problem?

0
votes
answers
59 views
+10

How to scalably implement something like Google alerts?

The requirement is that we have a lot of saved searches, and when new documents come in, we want to be able to find which saved searches are matched by these new documents, and be able to notify the creators of these saved searches in real time.

Is something like this already supported in any of the popular free software search engines and libraries, either built-in or as a plugin? If not, what's the best way to do this in an efficient and scalable way?

I guess the general idea should be to index the saved searches as if they are documents, and use the incoming documents as queries to search them. But I haven't figured out exactly how to do this.

It's also best if we can place as little restrictions on the supported query operators as possible.

Thanks in advance.

沙发
0
+50

How about doing the reverse -

  • Maintain searches in some other database with user specific information instead of solr.
  • Index the new document, so that it is available for all subsequent searches
  • Re execute all the saved queries across the document after addition, to check if it matches the document.

Also, Solr supports wide range of query support so you can check on it .

0
votes
answers
52 views
+10

Apache Solr實現建議,建議您只在搜索詞已經丟失最後一個字符

1

我有闊葉很奇怪的問題Solr的搜索,請參閱下面的屏幕截圖 enter image description hereApache Solr實現建議,建議您只在搜索詞已經丟失最後一個字符

這裏是我使用錯誤的拼寫搜索術語「mesur」,然後solr搜索提供拼寫更正結果,但查看結果所有結果似乎都有最後一個字符缺失。

現在看到下面的第二截屏 enter image description here

現在我已經附加「E」的搜索字詞和它的「MESURE」現在那麼它不提供任何結果具有良好的Solr經驗的任何一個幫助我特別是爲什麼solr在建議中失去了最後一個字符?

+0

請分享十有二的schema.xml和solrconfig.xml中的一部分/建議請求處理程序 – Mysterion

沙发
0
0

我已經改變schema.xml中解決我的問題,我在與字段類型的問題,以前是作爲跟隨

<fieldType name="text_general_partial" class="solr.TextField"> 
     <analyzer type="index"> 
      <tokenizer class="solr.StandardTokenizerFactory" /> 

      <!-- Partial Word matcher --> 
      <filter class="solr.NGramFilterFactory" minGramSize="3" 
       maxGramSize="1000" /> 
      <filter class="solr.ReverseStringFilterFactory" /> 

      <filter class="solr.NGramFilterFactory" minGramSize="3" 
       maxGramSize="1000" /> 
      <filter class="solr.ReverseStringFilterFactory" /> 
      <filter class="solr.RemoveDuplicatesTokenFilterFactory"/> 

      <filter class="solr.LowerCaseFilterFactory" /> 
      <filter class="solr.TrimFilterFactory" /> 
      <filter class="solr.SnowballPorterFilterFactory" language="English" /> 
     </analyzer> 
     <analyzer type="query"> 
      <tokenizer class="solr.StandardTokenizerFactory" /> 
      <filter class="solr.WordDelimiterFilterFactory" 
       generateWordParts="1" generateNumberParts="1" catenateWords="0" 
       catenateNumbers="0" catenateAll="0" splitOnCaseChange="0" /> 

      <filter class="solr.LowerCaseFilterFactory" /> 
      <filter class="solr.TrimFilterFactory" /> 
      <filter class="solr.SnowballPorterFilterFactory" language="English" /> 
     </analyzer> 
    </fieldType> 

但我已經改爲如下所示,現在工作正常

<fieldType name="text_general_partial" class="solr.TextField"> 
     <analyzer type="index"> 
      <tokenizer class="solr.StandardTokenizerFactory" /> 

      <!-- Partial Word matcher --> 
      <filter class="solr.NGramFilterFactory" minGramSize="3" 
       maxGramSize="1000" /> 
      <filter class="solr.ReverseStringFilterFactory" /> 

      <filter class="solr.NGramFilterFactory" minGramSize="3" 
       maxGramSize="1000" /> 
      <filter class="solr.ReverseStringFilterFactory" /> 
      <filter class="solr.RemoveDuplicatesTokenFilterFactory"/> 
      language="English" /> 
     </analyzer> 
     <analyzer type="query"> 
      <tokenizer class="solr.StandardTokenizerFactory" /> 
      <filter class="solr.WordDelimiterFilterFactory" 
       generateWordParts="1" generateNumberParts="1" catenateWords="0" 
       catenateNumbers="0" catenateAll="0" splitOnCaseChange="0" />language="English" /> 
     </analyzer> 
    </fieldType> 

去除過濾器按照XML架構和現在做工精細

10
votes
answers
68 views
+10

Choosing a stand-alone search server with custom ranking function, spartial search

I'm looking into the different options for choosing a search server for a project I'm involved in. The search server is used to power results on a dating website built in Rails, in which the search provides all the 'matchmaking'-magic.

Typical queries would involve ranking documents/results using an expression (in pseudo-code):

  • Order by ranking:
    • +50 if has_image attribute is true
    • +10 if has_boost attribute is true
    • +50 if latitude/longitude is within 40 miles from [point]
    • +20 if latitude/longitude is within 80 miles [point]
    • -(distance from attribute 'age' to 30)
  • Filter by:
    • Attribute 'age' between 25 and 35
    • Attribute 'sex' equals 'male'

Per default I'm not needing the full-text features of most of the search servers out there, and I do not need the full documents to be retrieved - just a unique ID.

The nature of the project yields for a search-server with the following properties:

  • Spartial ranking
  • Ranking of results based on a custom function
  • Attribute filters
  • Scalable and fast
  • Free

I've found Sphinx, Solr and ElasticSearch, but all of these are (as far as I see) built and optimized for full-text searching, with both ES and Solr built on Lucene, and I don't know what would perform best for filter/attribute heavy searching.

My questions:

  • Which of these servers would you prefer and why?
  • Have I missed any other obvious choices?
沙发
+40
+50

ElasticSearch也具有所有這些功能。

支持各種語言的地理距離/邊界框/多邊形和自定義分數腳本:http//www.elasticsearch.com/docs/elasticsearch/rest_api/query_dsl/

您對過濾器或其他查詢類型的性能沒有任何問題,我們在某些??情況下對100多個屬性的查詢進行大量過濾,而且速度很快。

另一件需要考慮的事情是與數據存儲集成。ES有一個很好的River功能,但它與所有數據存儲都不兼容,但類似的可以通過post commit hooks實現。

此外,社交網站受益於(近)實時搜索,ElasticSearch默認為1秒。配置和擴展比Solr更乾淨。這是我對每個應用程序經過一個月的評估後的看法。它還可以很好地適應您的數據模型。

希望這可以幫助。

保羅

+50

不知道其他人,但Solr可以做到這一切:

空間排名

你需要每晚構建一個Solr(截至本文撰寫時最新的穩定版本,Solr 1.4.1,不包括此功能),據我所知這是一個非常穩定的主幹功能。

基於自定義函數的結果排名

Solr有很多函數查詢來進行提升。

屬性過濾器

這是一種常見的搜索功能。

可擴展且快速

很多大型網站都在使用Solr,證明了它的可擴展性和速度。

自由

Solr是Apache許可的,非常寬鬆的許可證。

+10

你不是在談論搜索引擎。你在談論數據庫。在SQL中,過濾是標準的SELECT東西; 排名可以通過涉及大量CASE的一些狡猾的表達來完成,然後是ORDER BY。

要執行查詢的空間部分,您需要一個具有地理空間功能的數據庫。

PostgreSQL是唯一具有地理空間特性的可擴展,快速,免費的關係數據庫。

0

我認為雖然您可以使用像Solr或ES這樣的搜索引擎來支持這一點,但我認為您定義的“業務規則”意味著您最終會進行後期處理。

我認為過濾和基本搜索很容易在您的搜索引擎中完成,但我猜測排序邏輯最終會變得非常自定義和復雜,並且嘗試將其推送到您的搜索查詢中可能就像放置一輪掛在一個方孔...最好查詢結果,然後使用自己的後處理器規則庫來處理排序。

2
votes
answers
58 views
+10

How to remove duplicate contents? [closed]

I've a classified website (in PHP and Mysql) where users can post their ads free of cost. But users often post duplicate ads. The script do not allow them to post exact duplicate contents, so they do this by changing one or two character.

Is there any way to find the duplicate ad and alert the user (even if they modified some portion of the text)?

My site is in PHP and Mysql. I'm using sphix for searching. Thinking of changing this to mongodb and apache solr.

沙发
+20

Go and have a loot at

Calculate the similarity between two strings http://php.net/manual/en/function.similar-text.php

OR

Calculate Levenshtein distance between two strings http://www.php.net/manual/en/function.levenshtein.php

板凳
0

You can write a function which break the sentence into words and then match each words with the table and then find percentage of matching in database. Based on the percentage you can make the decision. For less database checking you can remove the common words and verbs, which you can store in a array. This is my personal opinion may be there are some other better techniques. But I must say it is a good question.

地板
0

Levenstein distance, jarowinkler, plagiarism algorithms.. Look them them up on SO

I would start with simple levenstein distance

看起來需要一些手動質量控制。例如,兩個不同的用戶可以在同一條街道上為空置公寓發布廣告:25 Lake Ave和26 Lake Ave - 如果您使用Levenshtein距離,則可以將其標記為重複。然而,重複的帖子可能像25 Lake Ave和25 Lake Avenue,它們有更高的Levenshtein距離! - arun 2013年6月9日0:38

0
votes
answers
78 views
+10

elasticsearch vs solr - 用於自定義全文搜索系統

0

我有一個基於Lucene索引的內部創建的搜索引擎的Web應用程序。elasticsearch vs solr - 用於自定義全文搜索系統

該應用程序允許全文搜索。

該應用程序使用jsp和java構建。

爲用戶索引Hadoop分佈式處理軟件。

Apache lucene項目是根據我們的具體情況定製的。主要是全文搜索的部分,添加訂購結果的新功能。

前端使用hadoop-rpc與後端進行通信,後者又創建了一個內部解決方案(10年前),用於研究Lucene的未知事件。

該代碼是遺留的,它需要遷移到另一種類型的軟件。這裏的問題:ElasticSearchSolr

的要求是:

  • 開源的,目的是爲了自定義接受特定功能的應用程序的排名 。
  • 使用Lucene索引(因爲你 不想重新索引)。
  • 速度是非常重要的因素。

我已閱讀了一些關於這個主題的文章,但我想爲我的個案提供個性化的意見,任何想法哪一個將是最好的選擇?

謝謝

+0

兩者都可以很好地工作。哪種方法最好,取決於超出可以在這裏描述的因素以及您的詳細信息要求,但通常這對兩個平臺都是「足夠好」。無論如何,他們都是Lucene。 – MatsLindh

+0

請參考此問題:https://stackoverflow.com/questions/10213009/solr-vs-elasticsearch?rq=1 – Val

沙发
0
0

SolR和Elasticsearch非常相似。他們都有你需要的功能。

這是一個非常開放的問題,我的觀點是Elasticsearch將是一個更好的選擇,它有一個更大的社區,並且往往會增長得更快。

enter image description here

板凳
0
0

定製更多您需要的解決方案是,你就越有可能會從Solr的受益。

雖然他們都使用Lucene的封面,但Solr直接暴露了更多。 Elasticsearch針對日誌和事物進行了更多調整,一些文本搜索配置更難以訪問。

+0

好吧,我明白了。哪一個有最好的技術支持?最好的代碼可以定製?從我看到的都有一個很好的在線社區,但哪一個更適合定製搜索引擎? – lucy

+0

Solr具有更好的定製性,因爲絕對一切都是開源的。彈性可能有更好的支付。免費支持,我不知道。 –

0
votes
answers
104 views
+10

Solr如何存儲文件

0

我知道Solr使用Lucene和Lucene使用倒排索引。但從目前爲止我看到的Lucene例子中,我不確定我是否理解它與Solr的結合。Solr如何存儲文件

給出下列文件:

<doc> 
    <field name="id">9885A004</field> 
    <field name="name">Canon PowerShot SD500</field> 
    <field name="manu">Canon Inc.</field> 
    <field name="inStock">true</field> 
</doc> 

從到目前爲止,我所看到的例子,我認爲Lucene的具有對待每個字段作爲文檔。然後它會說:ord Cannon出現在字段name和字段manu中。

索引分解了多少?或者索引只是說:「佳能這個詞出現在id爲這樣的文件」?

如何在Solr中使用Lucene時如何工作? 該文件在索引中的外觀如何? (假設每個字段都有indexed="true"

+1

您可以[通過在2013年從Lucene的/ Solr的革命演示一個如何Lucene的存儲數據的詳細綱要(獲得https://www.slideshare.net/lucenerevolution/what -is-inaluceneagrandfinal)。我不確定它是否提到了DocValues,它是一個面向列的存儲,而不是常規的倒排索引,可以加速某些操作。 – MatsLindh

+0

@MatsLindh感謝您的信息! – user3813234

沙发
0
1

我幾年前發了一篇博文,詳細解釋一下[1]。

簡短回答了這個問題:「從我到目前爲止看到的例子,我認爲Lucene的具有對待每個字段的文檔」

絕對不是。 Lucene信息單元是由地圖字段 - >值[s]組成的文檔。 Solr文檔只是一個稍微不同的表示,因爲Solr在描述字段的地方包含模式。 因此,在Solr中,您只需將字段添加到文檔中,而無需描述類型和其他屬性(存儲在模式中),而在Lucene中,您需要在創建文檔時明確定義它們。

[1] https://sease.io/2015/07/26/exploring-solr-internals-the-lucene-inverted-index/